所以,我有一个异步套接字设置,但是当我读取数据时并没有收到所有数据。有时会收到大部分数据,有时则不会。然后它挂在我程序的一部分上,因为它没有接收到要解析/处理的数据。
代码:
public static void OnArrival(IAsyncResult ar)
{
connection = (Socket)ar.AsyncState;
string data;
try
{
int bytesRead = connection.EndReceive(ar);
if (Sock.IsConnected(connection))
{
connection.BeginReceive(BufferData, 0, BufferData.Length, SocketFlags.None, new AsyncCallback(OnArrival), connection);
}
else
{
connection.Close();
}
if (bytesRead > 0)
{
data = System.Text.Encoding.ASCII.GetString(BufferData, 0, bytesRead);
HandleData.ProcessData(connection, data);
}
}
catch (Exception ex)
{
Logger.WriteError(ex.ToString());
connection.Close();
}
}
当 HandleData.ProcessData 被调用时,并不是所有的数据都被接收到。有任何想法吗?