TcpClient.ReceiveBufferSize 属性默认是 8192 ,如果返回的流数据大于这个值,是不是我就不能收到完整的数据,必须将ReceiveBufferSize数 TcpClient.ReceiveBufferSize 属性默认是 8192 ,如果返回的流数据大于这个值,是不是我就不能收到完整的数据,必须将ReceiveBufferSize数据设置更大才行? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一般在tcp或者udp上进行传输数据,当数据比较大的时候,都进行分段传输,例如以1024为一个包进行传输。 TcpClient.ReceiveBufferSize 属性默认是 8192 ,如果返回的流数据大于这个值,是不是我就不能收到完整的数据,必须将ReceiveBufferSize数据设置更大才行?//这个流程是这样的,比如你调用SEND方法发送一个byte[65535]的时候,其实是把这个65535的数据一次一次的发送到SOCKET内部的缓冲区去,SendBufferSize默认是8192,所以每一次交给TCP的数据其实只有8192,然后TCP分段把他们全部发送出去,直到发送完你的65535数据。而接收的时候,也是如此,ReceiveBufferSize 属性默认是 8192,很明显,不管来的数据有多大,但是接收缓冲区内部最大只有8192,每一次等待接收的数据其实只有8192这么大。OK,难道我们RECEIVE的时候只能收到这8192吗,当然不是了,RECEIVE的时候他会一次一次的重接收缓冲区里取数据来,直到取完为止。其实很简单,只要你用的是TCP,就不用去担心数据会丢。 关于meesagebox初学者的小问题SOS 急... 各位大虾们 帮帮忙 着急 关于C#类和ASPX.CS的问题 电子称,本人初来此论坛,希望有人能帮我 2M专线 谁有Socket通讯的例子代码! 今天想整一个项目进解决方案出现的问题,“CommonTools.Common”的类型初始值设定项引发异常 C# winform中的DataGrid如何使其行高和列宽不可变 怎样实现两个数据库同步 從數據庫方面設置字段無法修改。 如何在datatable中再查找符合条件的数据? OnResize 重载问题请教? 在winform中怎样禁用对textbox控件的文本内容进行复制?
//这个流程是这样的,比如你调用SEND方法发送一个byte[65535]的时候,其实是把这个65535的数据一次一次的发送到SOCKET内部的缓冲区去,SendBufferSize默认是8192,所以每一次交给TCP的数据其实只有8192,然后TCP分段把他们全部发送出去,直到发送完你的65535数据。
而接收的时候,也是如此,ReceiveBufferSize 属性默认是 8192,很明显,不管来的数据有多大,但是接收缓冲区内部最大只有8192,每一次等待接收的数据其实只有8192这么大。OK,
难道我们RECEIVE的时候只能收到这8192吗,当然不是了,RECEIVE的时候他会一次一次的重接收缓冲区里取数据来,直到取完为止。
其实很简单,只要你用的是TCP,就不用去担心数据会丢。