unity聊天室服务器端
来源:互联网 发布:布道者软件 编辑:程序博客网 时间:2024/06/05 15:08
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Net.Sockets;using System.Net;namespace soketSever{ class Program { static List<Client> clientList = new List<Client>(); public static void BroadcastMessage(string str) { var notConnectedList = new List<Client>(); foreach (Client item in clientList) { if (item.Connected) { item.SendMessage(str); } else { notConnectedList.Add(item); } } foreach (var item in notConnectedList) { clientList.Remove(item); } } static void Main(string[] args) { Socket listenerSoket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress ip=IPAddress.Parse("192.168.2.100"); IPEndPoint point = new IPEndPoint(ip, 7788); listenerSoket.Bind(point); listenerSoket.Listen(100); while (true) { Socket socket = listenerSoket.Accept(); Console.WriteLine("有一个客户端连接了"); Client client = new Client(socket); //写与客服端通信的逻辑 clientList.Add(client); } } }}
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Threading;using System.Net;using System.Net.Sockets;using System.Text;namespace soketSever{ class Client { private Thread t; private Socket socket; private byte[] date = new byte[1024]; public Client(Socket s) { socket = s; t = new Thread(ReceiveMessage); t.Start(); } void ReceiveMessage() { while (true) { if (socket.Poll(10, SelectMode.SelectRead)) { socket.Close(); break; } int length = socket.Receive(date); string str= Encoding.UTF8.GetString(date, 0, length); Program.BroadcastMessage(str); Console.WriteLine("收到消息:"+str); } } public void SendMessage(string str) { byte[] date = Encoding.UTF8.GetBytes(str); socket.Send(date); } public bool Connected { get { return socket.Connected; } } }}
0 0