我的接收代码参照网上现有的具体如下:
public static byte[] ReceiveVarData(Socket s) // return array that store the received data.
{
int total = 0;
int recv;
byte[] datasize = new byte[4];
LogUtil.writeLog("log.txt", "start to receive data");
byte[] data = null;
;
if (!s.Poll(200, SelectMode.SelectRead))
{
LogUtil.writeLog("log.txt", "socket can not selectRead");
data = null;
return data;
}
if (!(s.Available>0))
{
LogUtil.writeLog("log.txt", "socket is not Available");
data = null;
return data;
}
recv = s.Receive(datasize, 0, 4, SocketFlags.None);//receive the size of data array for initialize a array.
LogUtil.writeLog("log.txt", "socket receive finish step1");
LogUtil.writeLog("log.txt", "recv====" + recv);
int size = BitConverter.ToInt32(datasize, 0);
LogUtil.writeLog("log.txt", "size====" + size);
int dataleft = size;
data = new byte[size];
int index = 1;
while (total < size)
{
if (!s.Poll(200, SelectMode.SelectRead))
{
LogUtil.writeLog("log.txt", "index = " + index + "socket can not selectRead");
data = null;
return data;
}
if (!(s.Available > 0))
{
LogUtil.writeLog("log.txt", "index = " + index + "socket is not Available");
data = null;
return data;
}
recv = s.Receive(data, total, dataleft, SocketFlags.None);
LogUtil.writeLog("log.txt", "total====" + total);
LogUtil.writeLog("log.txt", "recv====" + recv);
LogUtil.writeLog("log.txt", "dataleft====" + dataleft);
if (recv == 0)
{
data = null;
break;
}
total += recv;
dataleft -= recv;
index++;
}
LogUtil.writeLog("log.txt", "socket receive finish step2");
return data;
}
现在该方法接收1M左右文件可以接收到,大文件就无法接收到。log日志如照片所示,请问我是哪方面写的有问题呢?
![图片说明](https://img-ask.csdn.net/upload/201611/04/1478227739_856916.jpg)![图片说明](https://img-ask.csdn.net/upload/201611/04/1478227792_268087.jpg)