(第三季)605-unity聊天室-客户端发送消息到服务器端

    xiaoxiao2021-12-14  50

    using UnityEngine; using System.Collections; using System.Net.Sockets; using System.Net; using System.Text; public class ChatManager : MonoBehaviour { public string ipaddress = "192.168.51.102"; public int port = 7788; public UIInput textInput; private Socket clientSocket; // Use this for initialization void Start () { ConnectToServer(); } // Update is called once per frame void Update () { } void ConnectToServer() { clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // 跟服务器端建立连接 clientSocket.Connect(new IPEndPoint(IPAddress.Parse(ipaddress), port)); } void SendMessage(string message) { byte[] data = Encoding.UTF8.GetBytes(message); clientSocket.Send(data); } public void OnSendButtonClick() { string value = textInput.value; SendMessage(value); textInput.value = ""; } void OnDestroy() { clientSocket.Shutdown(SocketShutdown.Both); clientSocket.Close(); // 关闭 连接 } } using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; // using System.Net.Sockets; using System.Net; namespace _022聊天室_socket_tcp服务器端 { class Program { static List<Client> clientList = new List<Client>(); static void Main(string[] args) { Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); tcpServer.Bind(new IPEndPoint(IPAddress.Parse("192.168.51.102"), 7788)); tcpServer.Listen(100); Console.WriteLine("server running..."); while (true) { Socket clientSocket = tcpServer.Accept(); Console.WriteLine("a client is connected!"); Client client = new Client(clientSocket);// 把与每个客户端通信的逻辑(首发消息)放到client类里面进行处理 clientList.Add(client); } } } } using System; using System.Collections.Generic; using System.Linq; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; namespace _022聊天室_socket_tcp服务器端 { /// <summary> /// 用来跟客户端做通信 /// </summary> class Client { private Socket clientSocket; private Thread t; private byte[] data = new byte[1024]; // 这个是一个数据容器 public Client(Socket s) { clientSocket = s; //启动一个线程,处理客户端的数据接收 t = new Thread(ReceiveMessage); t.Start(); } private void ReceiveMessage() { // 一直接收客户端的数据 while(true) { // 在接收数据之前 判断一下socket连接是否断开 if (clientSocket.Poll(10, SelectMode.SelectRead)) { break; // 跳出循环 终止线程的执行 } int length = clientSocket.Receive(data); string message = Encoding.UTF8.GetString(data, 0, length); // TODO 接收到数据的时候 要把这个数据 分发到客户端 // Console.WriteLine("收到了消息" + message); } } } }

    转载请注明原文地址: https://ju.6miu.com/read-970110.html

    最新回复(0)