我写了个TCP,和UDP类
发现TCP默认接收的最大缓冲 一次性好象最多只能接收 12000左右个字节
而 UDP默认接收的最大缓冲 一次性好象最多只能接收 28000左右个字节一次性接收多少个字节如何设置?程序里设置么,还是系统里打命令设置
据说一般最好。65535个以下 ,否则路由器容易丢包请问 一次性接收的缓冲区怎么设置 (系统里或者在程序里如何设置)
发现TCP默认接收的最大缓冲 一次性好象最多只能接收 12000左右个字节
而 UDP默认接收的最大缓冲 一次性好象最多只能接收 28000左右个字节一次性接收多少个字节如何设置?程序里设置么,还是系统里打命令设置
据说一般最好。65535个以下 ,否则路由器容易丢包请问 一次性接收的缓冲区怎么设置 (系统里或者在程序里如何设置)
[Category("全局设置")]
[Description("设置UDP每一次传输数据包的大小")]
[DefaultValue(8000)]
public int buf
{
set{_buf=value;}
get{return _buf;}
}
然后使用 byte[] 发送数据,发送的时候限制每一次包大小。
至于接收:如果你发送的包已经限制好,接收就不会出问题。
byte[] buffer = new byte[buf];
我说内部!!!
但每次接收的最大限制能设置啊!
一个300,然后检查返回值,不够继续读取,读取的时候也可以选择
要在buffer的哪个部分开始接收
如何设置!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
设置一个不是很大的缓冲区,1024-2048(为了效率啊`~太大很浪费内存的)
1。找一个结束标志,一般几个字节。重点来了!这几字节很可能会接收的内容重复,
所以检测这个标志很麻烦。所以接收到这个标志的时间再看后面是不是全是0
2。如果发送方可以控制。开头用两个到四位标注出整个数据包的长度。
Net.Sockets.SocketType.Dgram, Net.Sockets.ProtocolType.Udp)
.................
Dim buffer(1024) As Byte
Dim svr As New IPEndPoint(IPAddress.Any, 0)
mlis.BeginReceiveFrom(buffer, 0, 1024, 0, _
svr, New AsyncCallback(AddressOf ReadCallback), state)