永发信息网

在socket 编程时如果客户端发给服务器端的数据太大,一次性不能传送完,要怎么办??

答案:2  悬赏:0  手机版
解决时间 2021-02-14 23:33
  • 提问者网友:骑士
  • 2021-02-13 23:23
客户端数据传不完,就意味着服务器端的程序永远也执行不了。那就是这个会话不成功。不知道我讲明白没。。。。请高手指教!!
最佳答案
  • 五星知识达人网友:人间朝暮
  • 2021-02-14 00:31
数据太大的话一般都会分包发送,TCP和UDP包都有最大的上限。如果服务器端收不到就不会执行的话要用TCP协议。
传输层:
对于UDP协议来说,整个包的最大长度为65535,其中包头长度是65535-20=65515;
对于TCP协议来说,整个包的最大长度是由最大传输大小(MSS,Maxitum Segment Size)决定,MSS就是TCP数据包每次能够传
输的最大数据分段。为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需
要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小值
确定为这次连接的最大MSS值。

IP层:

对于IP协议来说,IP包的大小由MTU决定(IP数据包长度就是MTU-28(包头长度)。 MTU值越大,封包就越大,理论上可增加传送速率,但
MTU值又不能设得太大,因为封包太大,传送时出现错误的机会大增。一般默认的设置,PPPoE连接的最高MTU值是1492, 而以太网
(Ethernet)的最高MTU值则是1500,而在Internet上,默认的MTU大小是576字节
全部回答
  • 1楼网友:酒醒三更
  • 2021-02-14 01:05
一般客户端数据量很大时,服务器开多线程接收或用UDP吧
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯