У меня серьезная проблема с асинхронным методом приема System.Net.Sockets.Socket.
Вот код, который я использую для открытия соединения:
_socket = new Socket(endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
_socket.Connect(endpoint);
byte[] buffer = new byte[1024];
_socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, ReceiveCallback, buffer);
и здесьметод обратного вызова:
private void ReceiveCallback(IAsyncResult result)
{
byte[] buffer = (byte[])result.AsyncState;
int count = _socket.EndReceive(result);
if (count > 0)
{
// Do something
}
buffer = new byte[1024];
_socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, ReceiveCallback, buffer);
}
Проблема заключается в том, что ReceiveCallback никогда не вызывается, несмотря на то, что сокет подключен.
Может ли кто-нибудь помочь мне в этом?