110,534
社区成员
发帖
与我相关
我的任务
分享
public bool SafeRecvData(Socket sock, ref byte[] buff, int nLen)
{
try
{
int recLen = 0;
int tmpLen = 0;
while (tmpLen < nLen)
{
byte[] btmp = new byte[nLen - tmpLen];
sock.Blocking = true;
try
{
recLen = sock.Receive(btmp);
}
catch (Exception ex)
{
string s = ex.Message;//报错位置
}
tmpLen = tmpLen + recLen;
for (int i = tmpLen - recLen; i < tmpLen; i++)
{
buff[i] = btmp[i - tmpLen + recLen];
}
}
}
catch (Exception ex)
{
IOHelper.WriteLog("接收行情错误(错误类型1):" + ex.Message);
return false;
}
return true;
}
void ReceiveVarData(int packageLength, Socket sock, byte[] recBuffer) {
if (_isClosed) return;
int total = 0;
int recv = 0;
int dataleft = packageLength;
SocketError sError;
while (total < packageLength) {
recv = sock.Receive(recBuffer, total, dataleft, SocketFlags.None, out sError);
//
//这部分是处理断线的情况。
//
if (!CheckRecSocketError(recv, sError)) {
Close();
return;
}
total += recv;
dataleft -= recv;
}
}