程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#網絡編程(基本概念和操作) - Part.1(4)

C#網絡編程(基本概念和操作) - Part.1(4)

編輯:關於C語言

基本操作

1.服務端對端口進行偵聽

接下來我們開始編寫一些實際的代碼,第一步就是開啟對本地機器上某一端口的偵聽。首先創建一個 控制台應用程序,將項目名稱命名為ServerConsole,它代表我們的服務端。如果想要與外界進行通信, 第一件要做的事情就是開啟對端口的偵聽,這就像為計算機打開了一個“門”,所有向這個“門”發送的 請求(“敲門”)都會被系統接收到。在C#中可以通過下面幾個步驟完成,首先使用本機Ip地址和端口號 創建一個System.Net.Sockets.TcpListener類型的實例,然後在該實例上調用Start()方法,從而開啟對 指定端口的偵聽。

using System.Net;               // 引入這兩個命名空間,以下同
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();           // 開始偵聽
        Console.WriteLine("Start Listening ...");

        Console.WriteLine("\n\n輸入\"Q\"鍵退出。");
        ConsoleKey key;
        do {
            key = Console.ReadKey(true).Key;
        } while (key != ConsoleKey.Q);
    }
}

// 獲得IPAddress對象的另外幾種常用方法:
IPAddress ip = IPAddress.Parse("127.0.0.1");
IPAddress ip = Dns.GetHostEntry("localhost").AddressList[0];

上面的代碼中,我們開啟了對8500端口的偵聽。在運行了上面的程序之後,然後打開“命令提示符” ,輸入“netstat-a”,可以看到計算機器中所有打開的端口的狀態。可以從中找到8500端口,看到它的 狀態是LISTENING,這說明它已經開始了偵聽:

  TCP    jimmy:1030
0.0.0.0:0              LISTENING
  TCP    jimmy:3603            
0.0.0.0:0              LISTENING
  TCP    jimmy:8500
0.0.0.0:0              LISTENING
  TCP    jimmy:netbiOS-ssn     
0.0.0.0:0              LISTENING

在打開了對端口的偵聽以後,服務端必須通過某種方式進行阻塞(比如Console.ReadKey()),使得程 序不能夠因為運行結束而退出。否則就無法使用“netstat -a”看到端口的連接狀態,因為程序已經退出 ,連接會自然中斷,再運行“netstat -a”當然就不會顯示端口了。所以程序最後按“Q”退出那段代碼 是必要的,下面的每段程序都會含有這個代碼段,但為了節省空間,我都省略掉了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved