Я пытаюсь создать неблокирующий сокет в WM6 C #, но постоянно получаю следующую ошибку компилятора:
"Синхронные вызовы не поддерживаются на неблокирующих сокетах. Установите Blocking = true или используйтеасинхронные методы. "
Однако при использовании асинхронных методов BeginReceive () EndReceive () блокируется.То же самое для BeginSend () и EndSend ().Как вы делаете неблокирующий сокет в компактной среде?
Вот мой код.Я не использую метод AsyncCallback, потому что хочу вернуть переменные bytesRecv и bytesSent.
private void asyncReceive(byte[] recvBytes, int offset, int size, SocketFlags sf)
{
IAsyncResult asyncResult = null;
int recvBytes = 0;
try
{
asyncResult = _socket.BeginSend(sendBytes, offset, size, sf, null, null);
recvBytes = _socket.EndSend(asyncResult); // <-- This blocks even with _socket.Blocking = false;
}
catch (SocketException)
{
//Check SocketException.ErrorCode...
}
return recvBytes;
}