c#socket一对多通讯
时间: 2024-10-22 19:02:01 浏览: 14
在C#中,Socket用于网络通信,实现一对一或多对一的通讯通常涉及客户端和服务端的设计。对于一对多通讯,服务端通常是发起者,它创建一个Socket监听特定的端口,并接收来自多个客户端的连接。当一个新的连接到来时,服务端会为每个新连接开辟一个新的线程或使用非阻塞模式处理,这样可以同时处理多个客户端的请求。
以下是一个简单的例子:
1. **服务端** (Server):
- 创建一个`TcpListener`,绑定到指定端口。
- 当有新的连接时,`Accept()`方法将返回一个新的`Socket`对象,代表与客户端的连接。
```csharp
TcpListener listener = new TcpListener(IPAddress.Any, port);
listener.Start();
while (true)
{
Socket client = listener.AcceptSocket();
// 开辟新线程或异步处理每个客户端的消息
}
```
2. **客户端** (Client):
- 使用`TcpClient`建立到服务端的连接。
- 发送和接收消息。
```csharp
using (TcpClient client = new TcpClient(serverIpAddress, serverPort))
{
NetworkStream stream = client.GetStream();
// 发送消息
byte[] messageBytes = Encoding.UTF8.GetBytes("Hello Server");
stream.Write(messageBytes, 0, messageBytes.Length);
// 接收消息
byte[] buffer = new byte[1024];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
}
```
阅读全文