WEB开发网
开发学院软件开发C语言 C#网络编程(同步传输字符串) - Part.2 阅读

C#网络编程(同步传输字符串) - Part.2

 2009-03-26 08:20:05 来源:WEB开发网   
核心提示: 现在再次运行程序,得到的输出为:// 服务端Server is running ...Start Listening ...Client Connected!127.0.0.1:8500 <-- 127.0.0.1:7847Reading data, 52 bytes ...Rece

现在再次运行程序,得到的输出为:

// 服务端
Server is running ...
Start Listening ...
Client Connected!127.0.0.1:8500 <-- 127.0.0.1:7847
Reading data, 52 bytes ...
Received: "Welcome To TraceFact.Net"
输入"Q"键退出。
// 客户端
Client Running ...
Server Connected!127.0.0.1:7847 --> 127.0.0.1:8500
Sent: "Welcome To TraceFact.Net"
输入"Q"键退出。

再继续进行之前,我们假设客户端可以发送多条消息,而服务端要不断的接收来自客户端发送的消息,但是上面的代码只能接收客户端发来的一条消息,因为它已经输出了“输入Q键退出”,说明程序已经执行完毕,无法再进行任何动作。此时如果我们再开启一个客户端,那么出现的情况是:客户端可以与服务器建立连接,也就是netstat-a显示为ESTABLISHED,这是操作系统所知道的;但是由于服务端的程序已经执行到了最后一步,只能输入Q键退出,无法再采取任何的动作。

回想一个上面我们需要一个服务器对应多个客户端时,对AcceptTcpClient()方法的处理办法,将它放在了do/while循环中;类似地,当我们需要一个服务端对同一个客户端的多次请求服务时,可以将Read()方法放入到do/while循环中。

现在,我们大致可以得出这样几个结论:

如果不使用do/while循环,服务端只有一个listener.AcceptTcpClient()方法和一个TcpClient.GetStream().Read()方法,则服务端只能处理到同一客户端的一条请求。

如果使用一个do/while循环,并将listener.AcceptTcpClient()方法和TcpClient.GetStream().Read()方法都放在这个循环以内,那么服务端将可以处理多个客户端的一条请求。

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:网络编程 同步 传输

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接