日期:2014-05-18  浏览次数:21345 次

TCP,UDP接收一次数据包的 最大限度如何设置
我写了个TCP,和UDP类
发现TCP默认接收的最大缓冲   一次性好象最多只能接收   12000左右个字节
而     UDP默认接收的最大缓冲   一次性好象最多只能接收   28000左右个字节

一次性接收多少个字节如何设置?程序里设置么,还是系统里打命令设置
据说一般最好。65535个以下   ,否则路由器容易丢包

请问   一次性接收的缓冲区怎么设置   (系统里或者在程序里如何设置)


------解决方案--------------------
private int _buf=8000;//标记一次传输文件数据块的大小,不能超过MTU限制,否则在因特网上的数据发送将不成功00
[Category( "全局设置 ")]
[Description( "设置UDP每一次传输数据包的大小 ")]
[DefaultValue(8000)]
public int buf
{
set{_buf=value;}
get{return _buf;}
}
然后使用 byte[] 发送数据,发送的时候限制每一次包大小。
至于接收:如果你发送的包已经限制好,接收就不会出问题。
byte[] buffer = new byte[buf];
------解决方案--------------------
这个理论是错的吧,本身SEND发送出去,RECEIVE收的时候是分很多次收的.看网络情况而定,每次接收的大小这个是不能确定的.
------解决方案--------------------
IO读取操作好像有读取的字节数,buffer400读取300的时候,会返回
一个300,然后检查返回值,不够继续读取,读取的时候也可以选择
要在buffer的哪个部分开始接收
------解决方案--------------------
和发送放有关系吧
------解决方案--------------------
不知道这样如何:[For UDP]
设置一个不是很大的缓冲区,1024-2048(为了效率啊`~太大很浪费内存的)
1。找一个结束标志,一般几个字节。重点来了!这几字节很可能会接收的内容重复,
所以检测这个标志很麻烦。所以接收到这个标志的时间再看后面是不是全是0
2。如果发送方可以控制。开头用两个到四位标注出整个数据包的长度。