C#服務(wù)端端口偵聽(tīng)淺析
我們開(kāi)始編寫(xiě)C#服務(wù)端端口偵聽(tīng)的實(shí)際代碼,***步就是開(kāi)啟對(duì)本地機(jī)器上某一端口的偵聽(tīng)。首先創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序,將項(xiàng)目名稱命名為ServerConsole,它代表我們的服務(wù)端。如果想要與外界進(jìn)行通信,***件要做的事情就是開(kāi)啟對(duì)端口的偵聽(tīng),這就像為計(jì)算機(jī)打開(kāi)了一個(gè)“門(mén)”,所有向這個(gè)“門(mén)”發(fā)送的請(qǐng)求(“敲門(mén)”)都會(huì)被系統(tǒng)接收到。在C#中可以通過(guò)下面幾個(gè)步驟完成,首先使用本機(jī)Ip地址和端口號(hào)創(chuàng)建一個(gè)System.Net.Sockets.TcpListener類型的實(shí)例,然后在該實(shí)例上調(diào)用Start()方法,從而開(kāi)啟對(duì)指定端口的偵聽(tīng)。
C#服務(wù)端端口偵聽(tīng)實(shí)例演示:
- using System.Net; // 引入這兩個(gè)命名空間,以下同
 - using System.Net.Sockets;
 - using ... // 略
 - class Server {
 - static void Main(string[] args) {
 - Console.WriteLine("Server is running ... ");
 - IPAddress ip = new IPAddress(new byte[] { 127, 0, 0, 1 });
 - TcpListener listener = new TcpListener(ip, 8500);
 - listener.Start(); // 開(kāi)始偵聽(tīng)
 - Console.WriteLine("Start Listening ...");
 - Console.WriteLine("\n\n輸入\"Q\"鍵退出。");
 - ConsoleKey key;
 - do {
 - key = Console.ReadKey(true).Key;
 - } while (key != ConsoleKey.Q);
 - }
 - }//C#服務(wù)端端口偵聽(tīng)
 - // 獲得IPAddress對(duì)象的另外幾種常用方法:
 - IPAddress ip = IPAddress.Parse("127.0.0.1");
 - IPAddress ip = Dns.GetHostEntry("localhost").AddressList[0];
 
C#服務(wù)端端口偵聽(tīng)代碼中,我們開(kāi)啟了對(duì)8500端口的偵聽(tīng)。在運(yùn)行了上面的程序之后,然后打開(kāi)“命令提示符”,輸入“netstat-a”,可以看到計(jì)算機(jī)器中所有打開(kāi)的端口的狀態(tài)??梢詮闹姓业?500端口,看到它的狀態(tài)是LISTENING,這說(shuō)明它已經(jīng)開(kāi)始了偵聽(tīng):
- TCPjimmy:1030 0.0.0.0:0 LISTENING
 - TCPjimmy:3603 0.0.0.0:0 LISTENING
 - TCPjimmy:8500 0.0.0.0:0 LISTENING
 - TCPjimmy:netbios-ssn 0.0.0.0:0 LISTENING
 
在打開(kāi)了對(duì)端口的偵聽(tīng)以后,服務(wù)端必須通過(guò)某種方式進(jìn)行阻塞(比如Console.ReadKey()),使得程序不能夠因?yàn)檫\(yùn)行結(jié)束而退出。否則就無(wú)法使用“netstat -a”看到端口的連接狀態(tài),因?yàn)槌绦蛞呀?jīng)退出,連接會(huì)自然中斷,再運(yùn)行“netstat -a”當(dāng)然就不會(huì)顯示端口了。所以程序***按“Q”退出那段代碼是必要的,下面的每段程序都會(huì)含有這個(gè)代碼段,但為了節(jié)省空間,我都省略掉了。
C#服務(wù)端端口偵聽(tīng)的相關(guān)內(nèi)容就向你介紹到這里,希望對(duì)你了解和學(xué)習(xí)端口偵聽(tīng)有所幫助。
【編輯推薦】















 
 
 
 
 
 
 