2017-04-05 100 views
0

我的程序将停止在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; 
} 
+0

此代码不显示您描述的行为。也显示'StartListening()'方法。 – CodeCaster

+0

我不想问聪明,但为什么你甚至用'接受'? 'BeginAccept'会更好。 –

+0

@CodeCaster你好,我的程序在干扰时甚至不显示“连接成功”这个词,我认为这不是问题点,所以我没有在StartListening()中发布代码,如果你认为真的有必要 – twlin

回答

0

我发现,当我点击控制台,控制台会变成这样的选择模式:

Select mode

所有功能将停下来,所以我在设置了推荐窗口的时候关闭了“快速编辑模式”,这个问题似乎就解决了。

setting page