C# 未使用异步套接字接收所有数据
因此,我有一个异步套接字设置,但是当我读取数据时,并没有收到所有的数据。有时大多数数据都会被接收,而有时则不会。然后它挂起在我程序的一部分上,因为它没有收到要解析/处理的数据 代码: 调用HandleData.ProcessData时,不会接收所有数据。C# 未使用异步套接字接收所有数据,c#,sockets,networking,asynchronous,C#,Sockets,Networking,Asynchronous,因此,我有一个异步套接字设置,但是当我读取数据时,并没有收到所有的数据。有时大多数数据都会被接收,而有时则不会。然后它挂起在我程序的一部分上,因为它没有收到要解析/处理的数据 代码: 调用HandleData.ProcessData时,不会接收所有数据。 有什么想法吗?在BeginReceive完成之前,您正在使用BufferData。切换到同步IO或正确实现异步IO(使用回调或任务) public static void OnArrival(IAsyncResult ar) { con
有什么想法吗?在
BeginReceive
完成之前,您正在使用BufferData
。切换到同步IO或正确实现异步IO(使用回调或任务)
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();
}
}