C# Socket Receive()方法 它返回的是?

好像要设一个缓冲区byte[]temp=newbyte[1024];当客户端连接到服务端后.Receive()这个方法不太理解它返回的是接收到的数据byte长度吗?...... 好像要设一个缓冲区
byte[] temp=new byte[1024];

当客户端连接到服务端后.
Receive()这个方法不太理解 它返回的是接收到的数据byte长度吗?
...望高手指点
这个我知道.
展开
 我来答
Ben
2015-07-01 · 知道合伙人软件行家
Ben
知道合伙人软件行家
采纳数:860 获赞数:2875
认真回答者.

向TA提问 私信TA
展开全部
微软官方原文:https://msdn.microsoft.com/zh-cn/library/8s4y8aff.aspx

下面是我给您整理的您可能需要的内容.

Receive 方法将数据读入 buffer 参数,并返回成功读取的字节数。 从面向连接的套接字和无连正搭接套接字中都可以调用 Receive。
此重载仅要求您提供接收缓冲区。 缓冲区偏移量的默认值为 0,缓冲区的默认大小为缓冲区参数的长度,而 SocketFlags 的默认值为 None。
如果您使用的是面向连接的协议,则在调用 Receive 之前,必须调用 Connect 以建立远程主机连接,或者调用 Accept 以接受传入的连接。 Receive 方法只读取在 Connect 或 Accept 方法中建立的远程主机发送的数据。 如果您使用的是无连接协议,则您也可以使用ReceiveFrom 方法。 ReceiveFrom 将允许您收到从任何主机传入的数据。
如果没有可读取的数据,则 Receive 方法将一直处于阻止状态,直到数据可用,除非使用 Socket.ReceiveTimeout 设置了超时值。 如果超过超时值,Receive 调用将引发 SocketException。 如果您处于非阻止模式,并且协议堆栈缓冲区中没有可用的数据,则 Receive 方法将立即完成并引发 SocketException。 您可以使用 Available 属性确定是否有数据可以读取。 如果 Available 为非零,请重试接收操作。
如果当前使用的是面向连接的 Socket,那么 Receive 方法将会读取所有可用的数据,直到达到缓冲区的大小猜清旅为止。 如果远程主机使用 Shutdown 方法关闭了 Socket 连接,并且所有可用数据均已收到,则 Receive 方法将立即完成并返回零字节。
如果您使用的是无连接 Socket,则 Receive 将从您在 Connect 方法中指定的目标地址处读取第一个排队的数据报穗凳。 如果您接收到的数据报大于 buffer 参数的大小,则 buffer 将用消息的第一部分填充,多余的数据都会丢失,并且会引发 SocketException。
逍遥子k
2009-12-08 · TA获得超过347个赞
知道小有建树答主
回答量:372
采纳率:0%
帮助的人:144万
展开全部
从绑定的 System.Net.Sockets.Socket 接收数据陆烂虚,将历燃数据存入接早燃收缓冲区列表中。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liuheidanhi
2009-12-07 · 超过18用户采纳过TA的回答
知道答主
回答量:150
采纳率:0%
帮助的人:79.5万
展开全部
他是滑枯把接信世洞收到数据 存在他的参返咐数里(byte数组里)
Encoding.ASCII.GetString(byte数组);解析成字符串
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
maxcola
2017-10-10
知道答主
回答量:26
采纳率:0%
帮助的人:4.2万
展开全部
返回的是放到接收缓冲区内的数据长度和端地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式