using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
class Server
{
private static TcpListener listener;
public static void Main()
{
// 设置服务器监听的IP和端口
IPAddress ipAddress = IPAddress.Any;
int port = 5000;
listener = new TcpListener(ipAddress, port);
listener.Start();
Console.WriteLine("服务器已启动,等待客户端连接...");
// 启动一个线程来处理客户端连接
Thread listenThread = new Thread(ListenForClients);
listenThread.Start();
// 主线程可以继续其他工作或等待用户输入
Console.ReadLine();
}
private static void ListenForClients()
{
while (true)
{
// 等待客户端连接
TcpClient client = listener.AcceptTcpClient();
Console.WriteLine("新客户端已连接");
// 启动一个新线程来处理这个客户端
Thread clientThread = new Thread(HandleClientComm);
clientThread.Start(client);
}
}
private static void HandleClientComm(object client)
{
TcpClient tcpClient = (TcpClient)client;
NetworkStream clientStream = tcpClient.GetStream();
byte[] message = new byte[4096];
int bytesRead;
while (true)
{
bytesRead = 0;
try
{
// 从客户端读取消息
bytesRead = clientStream.Read(message, 0, 4096);
}
catch
{
// 如果读取失败,表示客户端断开连接
break;
}
if (bytesRead == 0)
{
// 客户端断开连接
break;
}
// 将接收到的消息转换为字符串并输出
string receivedMessage = Encoding.ASCII.GetString(message, 0, bytesRead);
Console.WriteLine("收到消息: " + receivedMessage);
// 回复客户端
byte[] response = Encoding.ASCII.GetBytes("消息已收到");
clientStream.Write(response, 0, response.Length);
}
tcpClient.Close();
Console.WriteLine("客户端已断开连接");
}
}
TcpListener 类来创建一个监听器,绑定到指定的 IP 地址和端口。NetworkStream 进行数据的读写操作。TcpClient 和线程。这段代码展示了如何使用 C# 实现一个简单的 Socket 服务器,能够同时处理多个客户端连接。
下一篇:c# 创建目录
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站