c# socket通信关闭服务代码咋写
时间: 2024-10-27 13:08:10 浏览: 10
在 C# 中,通过 Socket 进行通信时,关闭服务通常涉及到释放资源并中断连接。以下是一个基本的例子,展示了如何关闭一个基于 TCP 的服务器端 Socket:
```csharp
using System;
using System.Net;
using System.Net.Sockets;
public class Server
{
private TcpListener serverSocket;
public void StartServer(int port)
{
try
{
// 创建TCP监听器
serverSocket = new TcpListener(IPAddress.Any, port);
serverSocket.Start();
Console.WriteLine($"Server started on port {port}...");
while (true) // 无限循环等待客户端连接
{
// 等待客户端连接
var client = serverSocket.AcceptTcpClient();
Console.WriteLine($"Accepted connection from {client.Client.RemoteEndPoint}");
// 创建新的线程处理每个客户端请求,这里仅作示例,实际应用中应异步处理
ThreadPool.QueueUserWorkItem(HandleClient, client);
// 关闭客户端套接字,模拟服务不需要保持连接
client.Close();
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
private static void HandleClient(object state)
{
using (var client = (TcpClient)state)
{
// ...在此处处理客户端数据...
// 关闭客户端套接字后,主线程会继续检查其他连接,直到客户端完全断开
client.Close();
}
}
}
// 要关闭整个服务,可以在适当的地方调用 StopServer 方法
public void StopServer()
{
if (serverSocket != null)
{
foreach (var client in serverSocket.GetActiveListeners())
{
client.Stop();
}
serverSocket.Dispose();
Console.WriteLine("Server stopped.");
}
}
```
在这个例子中,`StopServer` 方法用于停止服务器。当需要关闭服务时,你可以调用 `StopServer` 并关闭所有活动的监听器。
阅读全文