首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#net , 怎么让byte[]数组大小随Socket的Receive接收的信息内容大小来变化

2012-09-06 
C#.net , 如何让byte[]数组大小随Socket的Receive接收的信息内容大小来变化Socket的接收信息方法Receive的

C#.net , 如何让byte[]数组大小随Socket的Receive接收的信息内容大小来变化
Socket的接收信息方法Receive的参数是一个byte[]数组,用在存放收到的数据。
byte[]是一个先要定义好的一个对象且具有大小,而收到的信息事先是不知道内容的大小,如果收到的内容的大小超出了byte[]的定义,超出的部分就会失去。
如何解决这个问题,让Receive的结果给一个可变的接收对象呢
我写的代码如下:
byte[] byteMessage=new byte[1000];
try
{
socket.Listen(5);
Socket newSocket=socket.Accept();
newSocket.Receive(byteMessage);
  ...

[解决办法]
常用的处理方式是

每次都去判断一下接收到的byteMessage, 如果有内容就继续执行Receive方法。这样循环就可以得到所有内容了。
[解决办法]
Receive方法有返回值的吧,表示接收了多少字节,如果小于指定的长度就说明接收完了。
[解决办法]
写个while循环调用Recive方法,直到Recive方法返回的值<=0,即此次Recive操作完毕。
不可能知道Recive长度的,除非你自己写的发送固定字段。

热点排行