以下是一些在C#中实现各种类型TCP和UDP服务器的示例代码:
TCP服务器:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
public class TcpServer
{
private TcpListener listener;
private Thread listenThread;
public TcpServer(IPAddress ipAddress, int port)
{
listener = new TcpListener(ipAddress, port);
}
public void Start()
{
listener.Start();
Console.WriteLine("Server started.");
listenThread = new Thread(ListenForClients);
listenThread.Start();
}
public void Stop()
{
listener.Stop();
listenThread.Join();
Console.WriteLine("Server stopped.");
}
private void ListenForClients()
{
while (true)
{
TcpClient client = listener.AcceptTcpClient();
Thread clientThread = new Thread(HandleClient);
clientThread.Start(client);
}
}
private void HandleClient(object clientObj)
{
TcpClient client = (TcpClient)clientObj;
NetworkStream stream = client.GetStream();
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0)
{
string message = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("Received message: " + message);
byte[] response = Encoding.ASCII.GetBytes("Message received.");
stream.Write(response, 0, response.Length);
}
client.Close();
}
}
UDP服务器:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class UdpServer
{
private UdpClient server;
private IPEndPoint endPoint;
public UdpServer(IPAddress ipAddress, int port)
{
server = new UdpClient(port);
endPoint = new IPEndPoint(ipAddress, port);
}
public void Start()
{
Console.WriteLine("Server started.");
while (true)
{
byte[] receivedData = server.Receive(ref endPoint);
string message = Encoding.ASCII.GetString(receivedData);
Console.WriteLine("Received message: " + message);
byte[] responseData = Encoding.ASCII.GetBytes("Message received.");
server.Send(responseData, responseData.Length, endPoint);
}
}
public void Stop()
{
server.Close();
Console.WriteLine("Server stopped.");
}
}
使用这些示例代码,你可以创建一个TCP或UDP服务器并监听指定的IP地址和端口。在TCP服务器中,每当有客户端连接时,会创建一个新的线程来处理客户端请求。在UDP服务器中,通过Receive方法接收客户端发送的数据,并通过Send方法向客户端发送响应。
请注意,这些示例代码只是基本的服务器实现,你可能需要根据自己的需求进行修改和扩展。