这是来自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;
}
}
}
答案 0 :(得分:7)
你是对的。此示例中的外部循环不应该退出。这旨在不断寻找新的连接。服务器倾向于遵循这种基本模式。
答案 1 :(得分:2)
是的,break语句只退出内部while循环。这才是重点。它接受连接然后读取所有数据。直到永远。
答案 2 :(得分:1)
在此示例中,Socket handler = listener.Accept();
是一个等待客户端连接的阻塞调用。
外部while循环只是让服务器保持活动状态。所以它不需要break;