Socket通讯

Socket通讯

TCP三次握手

1.客户端发送请求报文a,发送信号为i
2.服务端接收报文a,回应客户端发送确认信号i+1,重置发送信号j
3.客户端收到确认报文,再次发送确认信号j+1,重置发送信号k。连接建立成功。

简单的Socket例子

服务端

1.创建IPAddress和IPEndpoint

1
2
3
4
string host = "127.0.0.1"; //IPAddress.Any
int port = 8005;
IPAddress ip = IPAddress.Parse(host);
IPEndpoint ipe = new IPEndpoint(ip,port);

2.创建Socket,打开监听

1
2
3
4
5
6
7
8
//创建一个新的Socket,这里我们使用最常用的基于TCP的Stream Socket(流式套接字)
Socket socket = new Socket(AddressFamuly.InterNetwork,SocketType.Stream,ProtocolType.TCP);

//将该socket绑定到主机上面的某个端口
socket.Blind(ipe);

//启动监听,并且设置一个最大的队列长度(受理连接申请的最大值)
socket.listen(10);

3.接收报文

1
2
3
4
5
Socket serverSocket = socket.Accept();
byte[] recByte = new byte[1000];
int length = serverSocket.Receive(recByte,recByte.Length,0);
string resStr = Encoding.Unicode.GetString(recByte, 0, length);
Console.WriteLine(recStr);

4.发送报文

1
2
3
4
5
string sendStr = "Hello,clent";
byte[] sendByte = Encoding.Unicode.GetBytes(sendStr);
serverSocket.send(sendByte,sendByte.Length,0);
serverSocket.close();
socket.close();

客户端

1.和服务端第一步一样,创建IPAddress和IPEndpoint

……

2.创建clientSocket,连接serverSocket

1
2
3
4
5
//创建一个新的Socket,这里我们使用最常用的基于TCP的Stream Socket(流式套接字)
Socket clientSocket = new Socket(AddressFamuly.InterNetwork,SocketType.Stream,ProtocolType.TCP);

//将该socket连接到主机上面的某个端口
clientSocket.Connect(ipe);

3.发送报文

1
2
3
string sendStr = "Hello,server";
byte[] sendByte = Encoding.Unicode.GetBytes(sendStr);
clientSocket.send(sendByte,sendByte.Length,0);

4.接收报文

1
2
3
4
5
byte[] recByte = new byte[1000];
int length = clientSocket.Receive(recByte,recByte.Length,0);
string resStr = Encoding.Unicode.GetString(recByte, 0, length);
Console.WriteLine(recStr);
clientSocket.Close();
Donate comment here
-------------本文结束感谢您的阅读-------------
Fork me on GitHub