Hello World

QQ图片20201114031507.png

看不清? “右键,在新标签页打开图片” 会吗?

我的项目(服务端):TCP 协议 Server.zip
我的项目(游戏端):_5 Scocket-TCP ChatRoom.zip


总结心得

(服务端总结)

tcp创建的Socket对象需要使用方法 Bind(IPEndPoint类(IPAddress类,端口))
tcp创建的Socket对象需要使用方法 Listen(最多连接个数)

应将Accept()后得到的新Socket对象赋予给一个变量
再将该变量赋予给一个类,如项目中演示的Client类

一般接受信息用 While 死循环,同时检测连接,如果断开就break掉

检测套接字连接的两种方法:
clientSocket.Poll(10,SelectMode.SelectRead)
Connected == false

定义容器:
        private byte[] send = new byte[1024]; //发送容器
        private byte[] data = new byte[1024]; //数据容器
(广播消息代码,若某用户断开连接不发送保存到泛型集合,并依次从原集合中清除断开连接用户)
        public static void Broadcast(string gs) //广播消息
        {
            var NotconnectdList = new List<Client>();
            foreach (var client in Clients)
            {
                if (client.Connected)
                {
                    client.SendMessage(gs);
                }
                else
                {
                    NotconnectdList.Add(client);
                }
            }

            foreach (var kill in NotconnectdList)
            {
                Clients.Remove(kill);
            }
        }

(游戏端总结)

***线程中无法对UI进行直接操作,如果需要将Text修改值***
可以设定一个string message,将数据赋值给message,然后调用Update()
检测 (!String.isNullorEmpty),若为true,将message的值给Text后清空

游戏端Socket不需要Bind\Listen,需要Connect(IPEndPoint类(IPAddress类,端口))

应当在游戏关闭时执行如下代码
    private void OnDestroy()
    {
        t.Shutdown(SocketShutdown.Both);
        t.Close();
    }

是否断开连接检测与服务端相同

MZUE8DU0JLX4DU.png

好好学习,天天向上

标签: C#, Server, Socket

添加新评论