C# socket 服务器 代码
时间: 2024-12-22 16:26:07 浏览: 3
在C#中,你可以使用`System.Net.Sockets`命名空间中的`TcpListener`类来创建一个简单的TCP服务器。以下是一个基础的示例,展示了如何创建一个监听客户端连接的服务器:
```csharp
using System;
using System.Net;
using System.Net.Sockets;
class SocketServer
{
static void Main()
{
// 创建一个TcpListener实例,指定端口号
TcpListener listener = new TcpListener(IPAddress.Any, 8080);
try
{
// 开始监听
listener.Start();
Console.WriteLine("Server is listening on port " + listener.LocalEndpoint.Port);
while (true)
{
// 等待客户端连接
Console.WriteLine("Waiting for a connection...");
TcpClient client = listener.AcceptTcpClient();
// 创建一个新的线程处理每个客户端请求
Thread clientThread = new Thread(new ParameterizedThreadStart(HandleClient));
clientThread.Start(client);
}
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
finally
{
// 关闭监听器,停止接收新的连接
listener.Stop();
Console.WriteLine("Server stopped.");
}
}
// 客户端连接处理方法
private static void HandleClient(object obj)
{
TcpClient client = (TcpClient)obj;
NetworkStream stream = client.GetStream();
// 这里你可以读取客户端发送的数据并进行相应操作
byte[] buffer = new byte[1024];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
string message = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("Received message from client: " + message);
// 发送响应给客户端
string response = "Hello from server!";
byte[] responseBytes = Encoding.ASCII.GetBytes(response);
stream.Write(responseBytes, 0, responseBytes.Length);
// 最后关闭连接
client.Close();
}
}
```
在这个例子中,服务器在指定的端口(这里是8080)上等待客户端连接。每当有新连接时,它会在单独的线程中调用`HandleClient`方法来处理通信。
阅读全文