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

客户端数据传不完,就意味着服务器端的程序永远也执行不了。那就是这个会话不成功。不知道我讲明白没。。。。请高手指教!!... 客户端数据传不完,就意味着服务器端的程序永远也执行不了。那就是这个会话不成功。不知道我讲明白没。。。。请高手指教!! 展开
 我来答
网络路灯
2011-07-20 · 超过12用户采纳过TA的回答
知道答主
回答量:33
采纳率:0%
帮助的人:36.1万
展开全部
数据太大的话一般都会分包发送,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字节
追问
我也知道啊,只不过要怎么样去分包发送吗?代码要怎么写呢?。。。。
百度网友af0bc5e16
2011-07-07
知道答主
回答量:9
采纳率:0%
帮助的人:15.2万
展开全部
一般客户端数据量很大时,服务器开多线程接收或用UDP吧
追问
我是用的UDP呀,可是收到的数据不是我想要的。也找不到错在哪里
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式