1. 程式人生 > >Socket 通訊流程

Socket 通訊流程

一、客戶端

(1)建立socket

Socket tcpClientSocket= new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

(2)連線網路終端

IPAddress ipAddress = IPAddress.Parse("127.0.0.1");//伺服器IP地址
EndPoint point = new IPEndPoint(ipAddress, 7788);//網路終端(IP地址,埠號)
tcpClientSocket.Connect(point);//連線網路終端

(3)向伺服器端傳送訊息

string message = "你好,我是客戶端!";
tcpClientSocket.Send(Encoding.UTF8.GetBytes(message));

(4)接收伺服器訊息

byte[] data = new byte[1024];//接收資料容器
int length= tcpClientSocket.Receive(data);//返回值表示實際接收的位元組長度
string message1 = Encoding.UTF8.GetString(data,0,length);//轉換資料

二、服務端

(1)建立socket

Socket tcpServerSocket = new Socket(AddressFamily.InterNetwork
, SocketType.Stream, ProtocolType.Tcp);

(2)繫結網路終端(即繫結IP地址和埠號)

IPAddress ipAdress = new IPAddress(new byte[] { 127, 0, 0, 1});//伺服器IP地址
EndPoint point = new IPEndPoint(ipAdress, 7788);//網路終端:對Ip和埠的封裝類
tcpServerSocket.Bind(point);//繫結網路終端

(3)建立偵聽佇列

tcpServerSocket.Listen(100);//引數是伺服器最大連線數

(4)等待接受連線

Socket
clientSocket = tcpServerSocket.Accept();//這個方法會暫停當前執行緒,直到有有一個客戶端連線,並且返回一個用於通訊的Socket

(5)接收客戶端訊息

byte[] data = new byte[1024];//接收資料容器
int length = clientSocket.Receive(data);//返回值表示實際接收的位元組長度
string message = Encoding.UTF8.GetString(data, 0, length);//轉換資料

(6)傳送訊息給客戶端

string message1 = "hello,我是伺服器!";
clientSocket.Send(Encoding.UTF8.GetBytes(message1));