C#服務(wù)端與客戶端連接實(shí)現(xiàn)淺談
C#服務(wù)端與客戶端連接實(shí)現(xiàn)的由來:那么既然一個(gè)服務(wù)器端口可以應(yīng)對多個(gè)客戶端連接,那么接下來我們就看一下,如何讓多個(gè)客戶端與服務(wù)端連接。如同我們上面所說的,一個(gè)TcpClient就是一個(gè)Socket,所以我們只要?jiǎng)?chuàng)建多個(gè)TcpClient,然后再調(diào)用Connect()方法就可以了:
C#服務(wù)端與客戶端連接實(shí)現(xiàn)實(shí)例:
- class Client {
 - static void Main(string[] args) {
 - Console.WriteLine("Client Running ...");
 - TcpClient client;
 - //C#服務(wù)端與客戶端連接實(shí)現(xiàn)
 - for (int i = 0; i <= 2; i++) {
 - try {
 - client = new TcpClient();
 - client.Connect("localhost", 8500); // 與服務(wù)器連接
 - } catch (Exception ex) {
 - Console.WriteLine(ex.Message);
 - return;
 - }
 - //C#服務(wù)端與客戶端連接實(shí)現(xiàn)
 - // 打印連接到的服務(wù)端信息
 - Console.WriteLine("Server Connected!{0} --> {1}",
 - client.Client.LocalEndPoint, client.Client.RemoteEndPoint);
 - }
 - // 按Q退出
 - }//C#服務(wù)端與客戶端連接實(shí)現(xiàn)
 - }
 
上面代碼最重要的就是client = new TcpClient()這句,如果你將這個(gè)聲明放到循環(huán)外面,再循環(huán)的第二趟就會(huì)發(fā)生異常,原因很顯然:一個(gè)TcpClient對象對應(yīng)一個(gè)Socket,一個(gè)Socket對應(yīng)著一個(gè)端口,如果不使用new操作符重新創(chuàng)建對象,那么就相當(dāng)于使用一個(gè)已經(jīng)與服務(wù)端建立了連接的端口再次與遠(yuǎn)程建立連接。
此時(shí),如果在“命令提示符”運(yùn)行“netstat -a”,則會(huì)看到類似下面的C#服務(wù)端與客戶端連接實(shí)現(xiàn)實(shí)例的輸出:
- TCPjimmy:8500 0.0.0.0:0 LISTENING
 - TCPjimmy:8500 localhost:10282 ESTABLISHED
 - TCPjimmy:8500 localhost:10283 ESTABLISHED
 - TCPjimmy:8500 localhost:10284 ESTABLISHED
 - TCPjimmy:10282localhost:8500 ESTABLISHED
 - TCPjimmy:10283localhost:8500 ESTABLISHED
 - TCPjimmy:10284localhost:8500 ESTABLISHED
 
可以看到創(chuàng)建了三個(gè)連接對,并且8500端口持續(xù)保持偵聽狀態(tài),從這里以及上面我們可以推斷出TcpListener的Start()方法是一個(gè)異步方法。
C#服務(wù)端與客戶端連接實(shí)現(xiàn)的情況就向你介紹到這里,希望對你了解和學(xué)習(xí)C#服務(wù)端與客戶端連接實(shí)現(xiàn)有所幫助。
【編輯推薦】















 
 
 




 
 
 
 