请问,Socket编程,如何设置接收字节数大小

问题描述

.........//前面代码省略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

时间: 2024-10-15 16:08:40

请问,Socket编程,如何设置接收字节数大小的相关文章

tcp-TCP&amp;amp;amp;UDP测试工具模拟服务器端显示接收字节数0?

问题描述 TCP&UDP测试工具模拟服务器端显示接收字节数0? TCP&UDP测试工具模拟服务器端时,应用服务器向其发送请求时,界面弹出接收界面,但是现实接收字节数0,怎么回事? 解决方案 什么测试工具,它本身有没有问题?换一个工具看看. 解决方案二: 工具本身是不是没有正确你的数据,是不是用了自己的协议格式 解决方案三: 抓包看看呀,确认是没有发送还是发送了没有接收

VC socket编程,数据接收问题

问题描述 VC socket编程,数据接收问题 用VC socket编程时,用recv函数接收字符串数据,只能接收到前4个字符,多于4个字符的都是"烫"字乱码.这是什么问题?怎么解决? char cs[100]; case FD_READ: { CString num=""; //定义字符串,用于保存待显示字符 ::recv(s1,cs,strlen(cs),0); //接收来自客户端的字符串数据 GetDlgItem(IDC_TEXT)->GetWindow

Windows 和 Linux下使用socket下载网页页面内容(可设置接收/发送超时)的代码

主要难点在于设置recv()与send()的超时时间,具体要注意的事项,请看代码注释部分,下面是代码:   [cpp] view plaincopyprint?   #include <stdio.h>   #include <sys/types.h>   #include <stdlib.h>   #include <string.h>   #include <errno.h>   #include <string.h>     

限制文本字节数js代码

js     做项目时自己写一段js给大家.关于文本限制字数的问题,在实际开发中经常用到:主要问题出现在对中文的限制,下面代码就解决关于限制字节数的校验问题:只要将此下代码保存到一个js文件中并引入到校验的页面中,便可使用!同时希望大家给与大力支持和宝贵意见,本人会在今后闲余之际,发表更多的好文章,谢谢!! /* value: 值: byteLength:数据库字节长度 title:字段中文名称 attribute:属性名称 使用方法说明: 添加 (1) onkeyup="limitLength

限制文本字节数的JS源代码程序

js|程序|源代码 做项目时自己写一段js给大家.关于文本限制字数的问题,在实际开发中经常用到;主要问题出现在对中文的限制,下面代码就解决关于限制字节数的校验问题;只要将此下代码保存到一个js文件中并引入到校验的页面中,便可使用!同时希望大家给与大力支持和宝贵意见,本人会在今后闲余之际,发表更多的好文章,谢谢!! /*  value: 值:  byteLength:数据库字节长度  title:字段中文名称  attribute:属性名称  使用方法说明: 添加 (1) onkeyup="lim

巧用Javascript代码限制文本字节数

javascript 做项目时自己写一段js给大家.关于文本限制字数的问题,在实际开发中经常用到;主要问题出现在对中文的限制,下面代码就解决关于限制字节数的校验问题;只要将此下代码保存到一个js文件中并引入到校验的页面中,便可使用!同时希望大家给与大力支持和宝贵意见,本人会在今后闲余之际,发表更多的好文章,谢谢!! /*   value: 值:   byteLength:数据库字节长度   title:字段中文名称   attribute:属性名称   使用方法说明:  添加 (1) onkey

用JAVASCRIPT代码限制文本字节数

做项目时自己写一段js给大家.关于文本限制字数的问题,在实际开发中经常用到;主要问题出现在对中文的限制,下面代码就解决关于限制字节数的校验问题;只要将此下代码保存到一个js文件中并引入到校验的页面中,便可使用!同时希望大家给与大力支持和宝贵意见,本人会在今后闲余之际,发表更多的好文章,谢谢!! 以下是引用片段:/* value: 值: byteLength:数据库字节长度 title:字段中文名称 attribute:属性名称 使用方法说明:添加 (1) onkeyup="limitLength

限制文本字节数js代码_表单特效

做项目时自己写一段js给大家.关于文本限制字数的问题,在实际开发中经常用到:主要问题出现在对中文的限制,下面代码就解决关于限制字节数的校验问题:只要将此下代码保存到一个js文件中并引入到校验的页面中,便可使用!同时希望大家给与大力支持和宝贵意见,本人会在今后闲余之际,发表更多的好文章,谢谢!! /*  value: 值:  byteLength:数据库字节长度  title:字段中文名称  attribute:属性名称  使用方法说明: 添加 (1) onkeyup="limitLength(t

[js]用JAVASCRIPT正则表达式限制文本字节数的代码_正则表达式

做项目时自己写一段js给大家.关于文本限制字数的问题,在实际开发中经常用到;主要问题出现在对中文的限制,下面代码就解决关于限制字节数的校验问题;只要将此下代码保存到一个js文件中并引入到校验的页面中,便可使用!同时希望大家给与大力支持和宝贵意见,本人会在今后闲余之际,发表更多的好文章,谢谢!!  以下是引用片段: /*    value: 值:    byteLength:数据库字节长度    title:字段中文名称    attribute:属性名称    使用方法说明:   添加 (1)