请选择 进入手机版 | 继续访问电脑版

石家庄老站长

点击联系客服
客服QQ: 客服微信:
 找回密码
 立即注册
查看: 10|回复: 0

Unity网络游戏实战阅读笔记(1 2章)插座同步异步方法及多路复用

[复制链接]

1

主题

1

帖子

-7

积分

限制会员

积分
-7
发表于 2021-7-22 23:24:13 | 显示全部楼层 |阅读模式
项目代码:这里

第一章 Echo程序

套接字不仅包含网络协议,还包含本地和远程主机IP和端口号。端口号为0~65535Socket的Connect、Send和Receive都在阻止方法书服务器端代码中没有缓存套接字,客户端重新发送信息,然后等待阻止响应。第二章 异步和多路复用

书利用BeginConnect连接和BeginReceive异步接收信息(Begin和End成对出现)。回调函数位于其他线程中。无法访问Unity的主线程,可能会出现无法更新Update的Text问题。(约翰肯尼迪,北方执行部队)下图





服务器端使用BeginAccept异步接收请求时。后面是Console。需要添加ReadLine()。否则,启动时将直接关闭本地测试两个客户端(clientsocket  . remote  end  point  as  IP  endpoint)。可以通过端口查看端口。确定是什么客户端(不要打印IP地址,因为是在同一台计算机上测试的)。效果如下





以下是聊天室,接收信息,服务器向每个客户端发送消息,客户端保留最后一个字符串,效果如下





Poll客户端和服务器端,主要是Socket。利用Poll。客户端检查Udpate是否可以读取if  (socket.poll  (0,selectmode.selectread)),如果可以读取,则读取并显示。服务器为socket_Listen。使用Poll检查客户端连接是否存在。然后通过是否可以读取所有缓存的套接字。如果可以读取,则会广播到所有客户端。这里有很强的弊端。客户端和服务器端在没有任何消息往来时继续通过环路





上述循环导致大量CPU压力,导致选择。Socket  .“选择”检查IList中的所有套接字,并在IList中保留可读、可写、错误的套接字。没有可读的东西会被阻止。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|无图版|手机版|小黑屋|石家庄@IT精英团

GMT+8, 2021-8-5 12:55 , Processed in 0.202800 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2021 Comsenz Inc.

快速回复 返回顶部 返回列表