在这个无限循环中应该有2个break语句

时间:2013-03-20 12:20:14

标签: c#

这是来自Microsoft套接字教程http://msdn.microsoft.com/en-us/library/6y0e13d3.aspx

的示例

我有点困惑。第一个while(true)无限循环后跟第二个4行向下,但我们只使用一个break语句。在第二个while循环中使用break应该继续第一个while循环...不是吗? http://msdn.microsoft.com/en-us/library/6y0e13d3.aspx

while (true) {
    Console.WriteLine("Waiting for a connection...");
    // Program is suspended while waiting for an incoming connection.
    Socket handler = listener.Accept();
    data = null;

    // An incoming connection needs to be processed.
    while (true) {
        bytes = new byte[1024];
        int bytesRec = handler.Receive(bytes);
        data += Encoding.ASCII.GetString(bytes,0,bytesRec);
        if (data.IndexOf("<EOF>") > -1) {
            break;
            }
        }
    }

3 个答案:

答案 0 :(得分:7)

你是对的。此示例中的外部循环不应该退出。这旨在不断寻找新的连接。服务器倾向于遵循这种基本模式。

答案 1 :(得分:2)

是的,break语句只退出内部while循环。这才是重点。它接受连接然后读取所有数据。直到永远。

答案 2 :(得分:1)

在此示例中,Socket handler = listener.Accept();是一个等待客户端连接的阻塞调用。

外部while循环只是让服务器保持活动状态。所以它不需要break;