1. 程式人生 > >TCP網絡程序實例——服務器端與客戶端交互

TCP網絡程序實例——服務器端與客戶端交互

href tcpclient 端口號 信息 try 本機ip 發送數據 定義 .cn

◆ 服務器端

創建服務器端項目Server,在Main方法中創建TCP連接對象;然後監聽客戶端接入,並讀取接入的客戶端IP地址和傳入的消息;最後向接入的客戶端發送一條信息。代碼如下:

01     namespace Server
02     {
03         class Program
04         {
05             static void Main()
06             {
07                 int port = 888;                                               //端口  
08 TcpClient tcpClient; //創建TCP連接對象 09 IPAddress[] serverIP = Dns.GetHostAddresses("127.0.0.1"); //定義IP地址 10 IPAddress localAddress = serverIP[0]; //IP地址 11 TcpListener tcpListener = new
TcpListener(localAddress, port);//監聽套接字 12 tcpListener.Start(); //開始監聽 13 Console.WriteLine("服務器啟動成功,等待用戶接入…"); //輸出消息 14 while (true) 15 { 16 try 17 {
18 //每接收一個客戶端則生成一個TcpClient 19 tcpClient = tcpListener.AcceptTcpClient(); 20 NetworkStream networkStream = tcpClient.GetStream();//獲取網絡數據流 21 //定義流數據讀取對象 22 BinaryReader reader = new BinaryReader(networkStream); 23 //定義流數據寫入對象 24 BinaryWriter writer = new BinaryWriter(networkStream); 25 while (true) 26 { 27 try 28 { 29 string strReader = reader.ReadString();//接收消息 30 //截取客戶端消息 31 string[] strReaders = strReader.Split(new char[] { }); 32 //輸出接收的客戶端IP地址 33 Console.WriteLine("有客戶端接入,客戶IP:" + strReaders[0]); 34 //輸出接收的消息 35 Console.WriteLine("來自客戶端的消息:" + strReaders[1]); 36 string strWriter = "我是服務器,歡迎光臨";//定義服務端要寫入的消息 37 writer.Write(strWriter); //向對方發送消息 38 } 39 catch 40 { 41 break; 42 } 43 } 44 } 45 catch 46 { 47 break; 48 } 49 } 50 } 51 } 52 }

◆ 客戶端

創建客戶端項目Client,在Main方法中創建TCP連接對象,以指定的地址和端口連接服務器;然後向服務器端發送數據和接收服務器端傳輸的數據。代碼如下:

01     namespace Client
02     {
03         class Program
04         {
05     
06             static void Main(string[] args)
07             {
08                 //創建一個TcpClient對象,自動分配主機IP地址和端口號
09                 TcpClient tcpClient = new TcpClient();
10                 //連接服務器,其IP和端口號為127.0.0.1和888
11                 tcpClient.Connect("127.0.0.1", 888);
12                 if (tcpClient != null)                                         //判斷是否連接成功
13                 {
14                     Console.WriteLine("連接服務器成功");
15                     NetworkStream networkStream = tcpClient.GetStream();   //獲取數據流
16                     BinaryReader reader = new BinaryReader(networkStream); //定義流數據讀取對象
17                     BinaryWriter writer = new BinaryWriter(networkStream); //定義流數據寫入對象
18                     string localip="127.0.0.1";       //存儲本機IP,默認值為127.0.0.1
19                     IPAddress[] ips = Dns.GetHostAddresses(Dns.GetHostName()); //獲取所有IP地址
20                     foreach (IPAddress ip in ips)
21                     {
22                         if (!ip.IsIPv6SiteLocal)                        //如果不是IPV6地址
23                             localip = ip.ToString();                    //獲取本機IP地址
24                     }
25                     writer.Write(localip + " 你好服務器,我是客戶端");  //向服務器發送消息  
26                     while (true)
27                     {
28                         try
29                         {
30                             string strReader = reader.ReadString();   //接收服務器發送的數據  
31                             if (strReader != null)
32                             {
33                                 //輸出接收的服務器消息
34                                 Console.WriteLine("來自服務器的消息:"+strReader);
35                             }
36                         }
37                         catch
38                         {
39                             break;                 //接收過程中如果出現異常,退出循環  
40                         }
41                     }
42                 }
43                 Console.WriteLine("連接服務器失敗");
44             }
45         }
46     }

首先運行服務器端,然後運行客戶端,運行客戶端後後的服務器端效果如圖14.12所示,客戶端運行效果如圖14.13所示。

技術分享圖片 技術分享圖片

圖14.12 客戶端運行後的服務器端效果 圖14.13 客戶端運行效果

本文出自明日科技最新出版的《零基礎學C#》,轉載請註明版權歸屬!!!

技術分享圖片

TCP網絡程序實例——服務器端與客戶端交互