Я попытался следовать примеру на MSDN для создания асинхронного сервера. Но, кажется, ничто не может подключиться к нему.
http://msdn.microsoft.com/en-us/library/5w7b7x5f.aspx
Вот что у меня есть ...
Также обратите внимание на AddressList [2], это не ошибка;)
private static Socket mListenerSocket;
IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint localEP = new IPEndPoint(ipHostInfo.AddressList[2], port);
// This line outputs 192.168.0.6:6809 (which is correct)
Console.WriteLine("{0}", localEP.ToString());
mListenerSocket = new Socket(
ipHostInfo.AddressList[2].AddressFamily,
SocketType.Stream,
ProtocolType.Tcp);
mListenerSocket.Bind(localEP);
mListenerSocket.Listen(10);
mListenerSocket.BeginAccept(new AsyncCallback(AcceptCallback), mListenerSocket);
Мой метод обратного вызова определен как:
private static void AcceptCallback(IAsyncResult ar)
{
// It does not even get here
mListenerSocket.EndAccept(ar);
}
Я ожидаю, что когда я использую telnet, используя 'telnet 192.168.0.6 6809', он должен перейти к методу AcceptCallback, но это не так, поэтому соединение не установлено.
Так есть идеи, почему это не работает? Нет ошибок, чтобы помочь мне: (
Я попытался вместо этого использовать TcpListener, но опять-таки безрезультатно: (
mListenerSocket = new TcpListener(IPAddress.Any, port);
mListenerSocket.Start();
mListenerSocket.BeginAcceptSocket(new AsyncCallback(AcceptCallback), mListenerSocket);