C#中 用socket实现多个客户端的相互连接,并可以发送消息
时间: 2024-03-06 10:52:10 浏览: 263
可以通过以下步骤实现:
1. 创建一个服务端Socket对象,绑定IP地址和端口号,并开始监听连接请求。
```csharp
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888);
serverSocket.Bind(ipEndPoint);
serverSocket.Listen(10);
```
2. 使用异步方法Accept()等待客户端连接请求,并在客户端连接成功后,创建一个新的线程来处理客户端的消息。
```csharp
while (true)
{
Socket clientSocket = await serverSocket.AcceptAsync();
Thread thread = new Thread(() => HandleClient(clientSocket));
thread.Start();
}
```
3. 在处理客户端消息的线程中,使用异步方法Receive()接收客户端发送的消息,并使用异步方法Send()向客户端发送消息。
```csharp
private async void HandleClient(Socket clientSocket)
{
while (true)
{
byte[] buffer = new byte[1024];
int len = await clientSocket.ReceiveAsync(new ArraySegment<byte>(buffer), SocketFlags.None);
string message = Encoding.UTF8.GetString(buffer, 0, len);
Console.WriteLine($"Receive from {clientSocket.RemoteEndPoint}: {message}");
byte[] sendBuffer = Encoding.UTF8.GetBytes("Hello from server!");
await clientSocket.SendAsync(new ArraySegment<byte>(sendBuffer), SocketFlags.None);
}
}
```
通过以上步骤,就可以实现多个客户端的相互连接,并可以发送消息。需要注意的是,需要在客户端也使用异步方法来接收和发送消息。
阅读全文