(C#)使用tcp協議實現訊息的接收
阿新 • • 發佈:2018-12-06
1.socket程式設計-tcp伺服器端
建立Socket
將Socket繫結ip跟埠號。IPEndPoint是對ip+埠做了封裝
用IPAddress儲存ip
使用Socket類中Bind來進行繫結,Listen方法設定最大連線數。
Accept方法暫停當前執行緒,直到有一個客戶端連結過來,再往下進行。
接收到客戶端訊息,向客戶端傳送一個訊息。socket只能傳送Byte型別的資料。
class Program { static void Main(string[] args) { //1.建立socket Socket tcpServer = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //2.繫結ip跟埠號 IPAddress ipaddress = new IPAddress(new byte[]{192,168,1,103}); EndPoint point = new IPEndPoint(ipaddress,7788);//ipendpoint是對ip+埠做了一層封裝的類 tcpServer.Bind(point);//向作業系統申請一個可用的port和ip用來做通訊 //3.監聽(等待客戶端連線) tcpServer.Listen(100);//引數是最大連線數 //4.暫停當前執行緒,直到有一個客戶端連結過來,之後進行下面的程式碼.使用返回的Socket跟客戶端做通訊 Socket clientSocket = tcpServer.Accept(); string message = "hello 歡迎你"; byte[] data = Encoding.UTF8.GetBytes(message); clientSocket.Send(data); } }
2.tcp客戶端
建立Socket
通過ip和port定位一個要連線的伺服器
定義byte 將接收到的資料儲存再data中
將接收到的資料轉換成string
class Program { static void Main(string[] args) { //1.socket creat Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //2.發起建立連線的請求 IPAddress ipaddress = IPAddress.Parse("192.168.1.103"); EndPoint point = new IPEndPoint(ipaddress,7788); tcpClient.Connect(point);//通過IP和Port定位一個要連線道德伺服器端 //3.接受伺服器端發過來的訊息 byte[] data = new byte[1024]; int length = tcpClient.Receive(data);//length表示接受了多少位元組的資料 string message = Encoding.UTF8.GetString(data, 0, length); Console.WriteLine(message); Console.ReadKey(); } }
3.客戶端傳送訊息給伺服器
客戶端
string message2 = Console.ReadLine();
tcpClient.Send(Encoding.UTF8.GetBytes(message2));
伺服器端
byte[] data2 = new byte[1024];//儲存客戶端傳送過來的資料 int length = clientSocket.Receive(data2); string message2 = Encoding.UTF8.GetString(data2, 0,length); Console.WriteLine("接收到客戶端傳送的訊息" + message2);