我試圖按照MSDN上的exmaple創建一個異步服務器。但似乎沒有能夠連接到它。試圖啓動偵聽器套接字
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 192.168.0.6 6809 telnet時,它應該跳轉到AcceptCallback方法,但它不會,因此建立連接。
所以任何想法,爲什麼它不工作?在沒有錯誤,幫助我:(
我已經使用的TcpListener,而不是嘗試過,但同樣仍然無濟於事:(
mListenerSocket = new TcpListener(IPAddress.Any, port);
mListenerSocket.Start();
mListenerSocket.BeginAcceptSocket(new AsyncCallback(AcceptCallback), mListenerSocket);
在一般情況下,使用更好的'TcpListener'和'TcpClient'。這些類似乎更容易使用 – rekire 2012-01-07 12:05:35
'telnet'說'連接被拒絕',還是阻塞您的TCP超時期限? – 2012-01-07 12:14:41
「無法打開與主機的連接,端口6809:連接失敗」 – craig1231 2012-01-07 12:16:01