byte[] by = new byte[1024];
int number = 0;
string s = "";
while (true)
{
if ((number = socket.Receive(by)) > 0) //这个地方我想让它接收1024个字节,可只回来508个,
如何能让它接收完1024个呢?
{
s = System.Text.Encoding.Unicode.GetString(by);
by = new byte[1024];
break;
}
}
int number = 0;
string s = "";
while (true)
{
if ((number = socket.Receive(by)) > 0) //这个地方我想让它接收1024个字节,可只回来508个,
如何能让它接收完1024个呢?
{
s = System.Text.Encoding.Unicode.GetString(by);
by = new byte[1024];
break;
}
}
int number = 0;
string s = "";
while (true)
{
if ((number = socket.Receive(by)) > 0) //这个地方我想让它接收1024 收 //字节,可只回来508个
如何能让它接收完1024个呢?
{
s = System.Text.Encoding.Unicode.GetString(by);
by = new byte[1024];
break;
}
}
改成异步收发吧你发的时候,在实际传送过程中可能有会延时,接收过程时接到到508个字节时,后面的还没有等到,它就返回了,所以你要多接收几次,才可以把发送过来的数据全部接收完毕.
byte[] by = new byte[1024];
byte[] by1 = new byte[1024];
int len=0;
int number = 0;
string s = "";
while (true)
{
number = socket.Receive(by);
if (number > 0) //这个地方我想让它接收1024 收 //字节,可只回来508个
// 如何能让它接收完1024个呢?
{Array.Copy(by, 0, by1, len, number);
len += number;
if (len == 1024)
{
//这样就是当by1长度为1024就退出循环了
s = System.Text.Encoding.Unicode.GetString(by1);
break;
}
}
else
{
len = 0;
}