Мне нужно прослушать асинхронный сокет, однако я также хочу иметь возможность отправлять данные обратно через тот же сокет, но я бы постоянно зависал в цикле while.Как мне продолжать слушать, но иметь возможность отправлять данные обратно через сокет?Вот код, который у меня есть для асинхронного соединения и прослушивания.
sock1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IAsyncResult result;
result = sock1.BeginConnect(Host1, Comm.PortInt, null, null);
bool success = result.AsyncWaitHandle.WaitOne(1000, true);
if (!success)
{
sock1.Close();
throw new Exception("Could not connect to " + Host);//baseDissConnects
}
sock1.SendTimeout = 1000;
sock1.ReceiveTimeout = 1000;
//sock1.Connect(Host1, Comm.PortInt);
sock1.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer, 512 * 1024);
while (!(Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Escape)) //cool way to exit
{
if (IsConnected(sock1))
{
if (sock1.Available > 0)
{
ProcessResponse(sock1);
}
}
}
Любая помощь будет признательна, так как я не уверен, что мне нужно сделать это с помощью многопоточности.