问题描述
.........//前面代码省略byte[]receivebytes=newbyte[1024];//这个1024是什么意思intsuccessReceiveBytes=clientSocket.Receive(receivebytes);Receive(Byte[])方法:MSDN的解释是:Receive方法的参数是Byte类型的数组,它是存储接收到的数据的位置。我想问的是:new一个byte[]数组,字节数大小1024是自己指定的,如果接收的数据大于1024,岂不是丢失数据吗?
解决方案
解决方案二:
List<byte>bs=newList<byte>();//无限长度的大容器inti;intsuccessReceiveBytes=1024;//缓冲区大小,你喜欢多大就多大,一般不超过2000,因为记得一次发送数据的大小好像1千45左右,可以发送多次byte[]receivebytes=newbyte[1024];//这个1024同上while(receivebytes!=1024){successReceiveBytes=clientSocket.Receive(receivebytes);//这个方法,你看看有没有重载,貌似有设置一次取多少的参数for(i=0;i<successReceiveBytes;i++)//临时取的,有多少都导入大容器{bs.Add(receivebytes[i]);}}bs.ToArray();//你可能用的上
手写的,有错误见谅
解决方案三:
有http://msdn.microsoft.com/zh-cn/library/ec8ybzs0.aspx这个就不用楼上的楼上的和C语言的指针接受那个,思路差不多
解决方案四:
貌似只接受byte[]类型的而byte[]又没法不初始化大小。。。强烈关注。。。泛型List<byte>是否能解决此问题,求教各位达人。
解决方案五:
http://msdn.microsoft.com/zh-cn/library/ec8ybzs0.aspx果断打开这个链接
解决方案六:
不会丢失,没有接受的数据会保存在socket的缓冲区里面,需要再次调用receive接受。
解决方案七:
引用5楼的回复:
不会丢失,没有接受的数据会保存在socket的缓冲区里面,需要再次调用receive接受。
我就是问,设置的缓冲区大小1024字节数,如果接收的数据大于这个数字,岂不是丢失数据吗
解决方案八:
引用6楼的回复:
引用5楼的回复:不会丢失,没有接受的数据会保存在socket的缓冲区里面,需要再次调用receive接受。我就是问,设置的缓冲区大小1024字节数,如果接收的数据大于这个数字,岂不是丢失数据吗
其实你想知道的应该和我是一个意思吧就是我3L的提问
解决方案九:
引用6楼的回复:
引用5楼的回复:不会丢失,没有接受的数据会保存在socket的缓冲区里面,需要再次调用receive接受。我就是问,设置的缓冲区大小1024字节数,如果接收的数据大于这个数字,岂不是丢失数据吗
你的设置的是接受数据的缓冲区,它跟TCP协议使用的缓冲区是两码事。TCP协议是面向链接的协议,它只会断线,不会丢失数据。
解决方案十:
还是不明白,恭请高人
解决方案十一:
意思就是我准备给你一个水库的水,你只有一个洗脸盆,那么你只能一次一盆的端回家这个盆就是你的1024大小的数组
解决方案十二:
你如果能预测传送文件的大小的话,你可以定义一个容量大一点的byte数组,比如byte[]receivebytes=newbyte[1024*1024];1M