2017-02-18 151 views
0

我有这个Web服务器,我试图使用TcpListener,但它不会接受我提出的一半请求。它在请求发生时简单地挂在AcceptTcpClient上,它在任何端口上的行为也是一样的。TcpListener不接受客户端

this.main = new Thread(() => 
{ 
    while (this.running) 
    { 

     TcpClient c = this.t.AcceptTcpClient(); 
     new Task(() => 
     { 
      handleClient(c); 
     }).Start(); 

    } 
}); 
this.main.Start(); 
+0

究竟是你想用新的主题和新的任务这个代码做的工作就好了。 https://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener(v=vs.110).aspx –

回答

0

也许你可以尝试这样的事:

public void Start() 
{ 
    Console.WriteLine("Server started..."); 

    TcpListener listener = new TcpListener(System.Net.IPAddress.Loopback, 1234); 
    listener.Start(); 
    while (true) 
    { 
     TcpClient client = listener.AcceptTcpClient(); 
     new Thread(new ThreadStart(() => 
     { 
      HandleClient(client); 
     })).Start(); 
    } 
} 

private void HandleClient(TcpClient client) 
{ 
    NetworkStream stream = client.GetStream(); 
    StreamWriter writer = new StreamWriter(stream, Encoding.ASCII) { AutoFlush = true }; 
    StreamReader reader = new StreamReader(stream, Encoding.ASCII); 

    string inputLine = reader.ReadLine(); 
    Console.WriteLine("The client with name " + " " + inputLine + " is conected"); 

} 
相关问题