首页 > 学院 > 开发设计 > 正文

unity聊天室服务器端

2019-11-07 22:50:26
字体:
来源:转载
供稿:网友
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; }         }    }}

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表