C# socket实现服务器和客户端各自收发信息
时间: 2024-09-06 11:06:16 浏览: 46
C#编写socket做服务器和客户端例子
在C#中,Socket编程通常用于创建网络应用程序,包括服务器和客户端之间的通信。以下是简要概述如何实现基本的TCP服务器和客户端收发消息:
**服务器端(Server):**
1. 创建`TcpListener`实例并开始监听指定的端口。
```csharp
using System.Net;
using System.Net.Sockets;
TcpListener listener = new TcpListener(IPAddress.Any, PORT);
listener.Start();
```
2. 当有客户端连接时,接受连接请求并创建一个新的Socket连接。
```csharp
Socket clientSocket = listener.AcceptSocket();
```
3. 接收客户端发送的消息,并处理响应。
```csharp
byte[] buffer = new byte[1024];
clientSocket.Receive(buffer);
string messageFromClient = Encoding.ASCII.GetString(buffer);
// 处理接收到的信息...
string responseMessage = "服务器收到您的消息: " + messageFromClient;
clientSocket.Send(Encoding.ASCII.GetBytes(responseMessage));
```
4. 关闭连接后释放资源。
```csharp
clientSocket.Close();
listener.Stop();
```
**客户端(Client):**
1. 创建`TcpClient`实例,连接到服务器的IP地址和端口号。
```csharp
TcpClient client = new TcpClient();
client.Connect(SERVER_IP, PORT);
```
2. 创建一个网络流(Stream)进行数据交换。
```csharp
NetworkStream networkStream = client.GetStream();
```
3. 发送消息给服务器。
```csharp
string sendMessage = "这是来自客户端的消息";
byte[] data = Encoding.ASCII.GetBytes(sendMessage);
networkStream.Write(data, 0, data.Length);
```
4. 接收服务器的响应并关闭连接。
```csharp
byte[] receiveBuffer = new byte[1024];
int bytesRead = networkStream.Read(receiveBuffer, 0, receiveBuffer.Length);
string serverResponse = Encoding.ASCII.GetString(receiveBuffer, 0, bytesRead);
Console.WriteLine("从服务器接收: " + serverResponse);
client.Close();
```
阅读全文