求一份unity中Socket-TCP从服务器接收数据方法的代码

求一份unity中Socket-TCP从服务器接收数据方法的代码,第1张

TCP协议通信,接收方接收数据的前后次序与发送方一致,但数据包不一定一致。打个比方,发送方按顺序发送了2个数据包,接收可能仅接收1次就能全部收到,也可能需要收2次才能收到,也可能收3次,每次收到的数据大小不一定和发送方发送的数据包大小一样,但最终收到的总数据是一致的。

从你的程序来看,客户端连续发送2包数据,服务器有可能一次就全部接到,也可能分2次收到,也可能会收2次以上才能收到。如果在发送“########helloworld”和“######whatisit”之间增加一些延时语句,比如延时1秒,那么可以肯定服务器端只能收到1次,因为在发送第1包数据的时候,服务器端就接收到一次数据,而在发送第2包数据时,服务器已经不再有接收动作了。

就现在的客户端程序来说,如果要在服务器端收到所有数据,可以考虑在服务器端循环接收数据,拼装数据,直到收不到数据为止,然后输出所有接收到的数据。

while(1)

{

int rr

sock_fd = accept( sock, NULL, NULL)

retval = 0

while(1)

{

rr = recv( sock_fd, buf1, MAX_BUFLEN, 0 )

if(rr==0) break

memcpy(buf+retval,buf1,rr)

retval+=rr

}

printf("buf= %s\n ##retval=%d\n",buf,retval)

write(sock_fd,"get the call\n",sizeof("get the call\n")-1)

}

可以试试看。仅供参考。

任何非单机游戏 都需要从服务器获取数据,从而将你的帐号信息发送到你的客户端。这种体系结构简称C/S结构。

想了解更详细的去百度 C/S结构吧。回答有字数限制的。

纯手打,望采纳。

英雄联盟一直从服务器接收数据,一般是以下原因:

网络断开或者网速太慢,导致无法连接;

此类情况,重启客户端,提高网速即可解决。

英雄联盟大区服务器崩溃,无法登陆;

此类情况,需要等待官方修复。

大区维护,导致无法正常登陆;

此类情况,需要等待官方通知维护时间。

英雄联盟服务器接收数据失败或者接受数据较慢,一般是用户的网络问题导致,因此在游戏前,尽量关闭后台占网程序,只运行英雄联盟即可。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/220696.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-07
下一篇2023-04-07

发表评论

登录后才能评论

评论列表(0条)

    保存