服务器端
- 创建Socket对象:使用
System.Net.Sockets.Socket
类,指定地址家族(通常为AddressFamily.InterNetwork
表示IPv4)、套接字类型(SocketType.Stream
用于TCP)和协议类型(ProtocolType.Tcp
)。
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- 绑定IP地址和端口:创建
IPEndPoint
对象,指定服务器的IP地址和监听端口,然后调用Bind
方法将Socket绑定到该端点。
IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 12345);
serverSocket.Bind(endPoint);
- 开始监听:调用
Listen
方法开始监听传入的连接请求,参数为最大挂起连接数。
serverSocket.Listen(10);
- 接受客户端连接:使用
Accept
方法阻塞等待客户端连接,该方法返回一个新的Socket
对象用于与客户端通信。
Socket clientSocket = serverSocket.Accept();
- 数据收发:使用
Send
和Receive
方法进行数据的发送和接收。发送时需将数据转换为字节数组。
// 发送数据
string message = "Hello, client!";
byte[] sendBuffer = Encoding.UTF8.GetBytes(message);
clientSocket.Send(sendBuffer);
// 接收数据
byte[] receiveBuffer = new byte[1024];
int bytesRead = clientSocket.Receive(receiveBuffer);
string receivedMessage = Encoding.UTF8.GetString(receiveBuffer, 0, bytesRead);
- 关闭连接:通信结束后,关闭与客户端的
Socket
连接以及服务器的监听Socket
。
clientSocket.Close();
serverSocket.Close();
客户端
- 创建Socket对象:同服务器端创建方式,指定相同的地址家族、套接字类型和协议类型。
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- 连接服务器:创建
IPEndPoint
对象指定服务器的IP地址和端口,调用Connect
方法连接服务器。
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12345);
clientSocket.Connect(endPoint);
- 数据收发:与服务器端类似,使用
Send
和Receive
方法进行数据的发送和接收。
// 发送数据
string message = "Hello, server!";
byte[] sendBuffer = Encoding.UTF8.GetBytes(message);
clientSocket.Send(sendBuffer);
// 接收数据
byte[] receiveBuffer = new byte[1024];
int bytesRead = clientSocket.Receive(receiveBuffer);
string receivedMessage = Encoding.UTF8.GetString(receiveBuffer, 0, bytesRead);
- 关闭连接:通信结束后,关闭
Socket
连接。
clientSocket.Close();