c# Socket如何异步分批发送和接收数据包?
小妹现在在给公司做一个聊天软件,现在上线人数达到600以上,之前是使用同步方式,由于多客户端同时连接服务器,导致有些客户端收不到服务器回应,所以想改成异步连接,但是在处理...
小妹现在在给公司做一个聊天软件,现在上线人数达到600以上,之前是使用同步方式,由于多客户端同时连接服务器,导致有些客户端收不到服务器回应,所以想改成异步连接,但是在处理分批发送和接收大数据包时,不会处理分批接收,并且打包?请路过的大侠帮帮我!谢谢
展开
2个回答
展开全部
如果在同步的基础上去改,改动会比较大,因为同步的SOCKET通讯几乎不需要什么协议,而异步一般是需要一个简单的协议,并且复杂程度会高很多,因为异步本身就是不确定的。
我不太清楚你说的“处理分批发送和接收大数据包”是什么意思,我的理解就是用代码把数据一块一块的发送了然后再在目的端去重新组合,你的意思是一个SOCKET同时发消息传文件等等?(长连接,不可取,协议会变得非常复杂)我印象中C#是有异步的SOCKET可以直接用的,十分简单,可能需要改动一些结构。
不知道是否有用代码验证过发送的包是否出错(一般是需要的,在包的前面或者后面附一些BIT就足够了),如果想尽可能简单的修改,就还是多线程仍然采用同步的方式好了,SOCKET专用只维持短连接,监听的监听,发送的发送,接收的接收,处理的处理。如果需要提高程序的效率,搜索一下重叠IO,这个是高效率IO的不二选择。希望我没理解错
我不太清楚你说的“处理分批发送和接收大数据包”是什么意思,我的理解就是用代码把数据一块一块的发送了然后再在目的端去重新组合,你的意思是一个SOCKET同时发消息传文件等等?(长连接,不可取,协议会变得非常复杂)我印象中C#是有异步的SOCKET可以直接用的,十分简单,可能需要改动一些结构。
不知道是否有用代码验证过发送的包是否出错(一般是需要的,在包的前面或者后面附一些BIT就足够了),如果想尽可能简单的修改,就还是多线程仍然采用同步的方式好了,SOCKET专用只维持短连接,监听的监听,发送的发送,接收的接收,处理的处理。如果需要提高程序的效率,搜索一下重叠IO,这个是高效率IO的不二选择。希望我没理解错
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询