c# 服务器端使用TCP/IP套接字(Socket)与局域网内其他客户端计算机程序通讯,让程序执行某事件
时间: 2024-09-12 08:05:57 浏览: 19
在 C# 中,服务器端使用 TCP/IP 套接字(Socket)与局域网内的客户端通信,通常涉及以下几个步骤:
1. 创建服务器端 socket:首先,你需要创建一个新的 `TcpListener` 对象,并指定一个端口号。例如:
```csharp
using System.Net;
using System.Net.Sockets;
TcpListener listener = new TcpListener(IPAddress.Any, 8080);
```
这里,`IPAddress.Any` 表示监听所有可用的 IP 地址,8080 是选择的一个默认端口。
2. 开始监听连接:调用 `Start()` 方法开始监听新的连接请求。
```csharp
listener.Start();
```
3. 接受客户端连接:当有客户端尝试连接时,通过 `AcceptTcpClient` 方法接受新连接并获取一个 `TcpClient` 对象。
```csharp
TcpClient client = listener.AcceptTcpClient();
```
4. 处理客户端请求:创建一个 `NetworkStream` 对象用于读写数据,并可以使用 `StreamReader` 和 `StreamWriter` 来读取和发送文本信息。当接收到来自客户端的消息时,你可以编写相应的处理逻辑,比如执行特定的事件。
5. 关闭连接:在完成操作后,记得关闭 `TcpClient` 和相关的网络流,释放资源。
```csharp
client.Close();
listener.Stop();
```
示例代码片段:
```csharp
public void HandleConnections()
{
while (true)
{
try
{
TcpClient client = listener.AcceptTcpClient();
using (var stream = client.GetStream())
using (var reader = new StreamReader(stream))
using (var writer = new StreamWriter(stream))
{
string message = reader.ReadLine(); // 接收消息
// 根据 message 执行对应事件
ProcessMessage(message);
writer.WriteLine("Server received and processed your request."); // 发送响应
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
private void ProcessMessage(string message)
{
// 在这里添加针对 message 的事件处理逻辑
}
```