套接字Accept()阻塞,直到我按下一个键

时间:2017-04-05 10:49:03

标签: c# sockets server

我的程序将在Accept()停止阻塞等待,它将启动一个新线程来处理已接受的套接字。

但是,有时客户端成功连接到服务器并发送数据, 我使用数据包嗅探工具检查服务器是否已收到数据, 但我的服务器程序停止,直到我按下Enter键;

按下回车键后,之前发送的所有数据都将被处理。

但我的程序中没有Console.Read()

这是我的代码:

static Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
public static int Main(String[] args)
{
    listener.ReceiveTimeout = 10000;
    listener.SendTimeout = 10000;
    listener.Bind(localEndPoint);
    listener.ReceiveBufferSize = 51200;
    listener.SendBufferSize = 1283;
    listener.Listen(30); 
    while(true) {
       Socket clientSocket = listener.Accept();
       Console.WriteLine("Connection Success");
       var thread = new Thread(() => StartListening(clientSocket)) {
            IsBackground = true
        };
        thread.Start();
    }
    return 0;
}

1 个答案:

答案 0 :(得分:0)

我发现当我点击控制台时,控制台将转为选择模式,如下所示:

Select mode

所有功能都将停止,所以我在commend窗口的设置中关闭“QuickEdit Mode”,然后问题似乎就解决了。

setting page