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