Socket-tcp協議客戶端與伺服器端互聯
阿新 • • 發佈:2018-11-05
客戶端
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; /// <summary> /// 客戶端 /// </summary> namespace tcp協議客戶端 { class Program { static void Main(string[] args) { //建立一個Socket Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //發起建立連線的請求 IPAddress iPAddress = IPAddress.Parse("192.168.3.35");//可以字串轉換成ipaddress的物件 EndPoint point = new IPEndPoint(iPAddress,7788); tcpClient.Connect(point);//通過ip和埠號定位一個伺服器端 //連線成功 接收訊息 byte[] data = new byte[1024]; int length = tcpClient.Receive(data);//length表示接收了多少資料 string message = Encoding.UTF8.GetString(data, 0, length);//只把接收到的資料轉化 Console.WriteLine(message); //--------向伺服器端傳送訊息------------ string message2 = Console.ReadLine(); tcpClient.Send(Encoding.UTF8.GetBytes(message2));//把字串轉換為位元組陣列傳送到伺服器端 Console.ReadKey(); } } }
伺服器端
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net.Sockets; using System.Net; /// <summary> /// 伺服器端 /// </summary> namespace tcp協議 { class Program { static void Main(string[] args) { // 建立Socket Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //繫結ip和埠號 192.168.3.35 IPAddress iPAddress = new IPAddress(new byte[] { 192,168,3,35 });//ipaddress是對ip和埠進行封裝的類 EndPoint point = new IPEndPoint(iPAddress,7788);// 向系統申請一個可用的ip埠號 tcpServer.Bind(point); //開始監聽(等待客戶端連結) tcpServer.Listen(100);//最大連線數 Console.WriteLine("開始監聽"); //接收 返回一個clientSocket Socket clientScocket= tcpServer.Accept();//暫停當前執行緒,直到一個客戶端連線過來之後進行下面的操作 Console.WriteLine("一個客戶端連線過來"); //向客戶端傳送一個返回訊息 string message = "hallo 你好"; byte[] data= Encoding.UTF8.GetBytes(message);//對字串做編碼,等到一個位元組陣列 clientScocket.Send(data); Console.WriteLine("向客戶端傳送了一條資料"); //-----------------接收伺服器端訊息------------------- byte[] data2 = new byte[1024];//傳建一個位元組陣列接收客戶端發來的訊息 int length = clientScocket.Receive(data2); string message2 = Encoding.UTF8.GetString(data2, 0, length);//把位元組陣列轉換為字串 Console.WriteLine("接收了一條訊息" + message2); Console.ReadKey(); } } }