using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
class TcpServerExample
{
private static void HandleClient(TcpClient client)
{
using (NetworkStream stream = client.GetStream())
{
byte[] buffer = new byte[1024];
int bytesRead;
while (true)
{
try
{
bytesRead = stream.Read(buffer, 0, buffer.Length);
if (bytesRead == 0)
break;
string receivedData = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("Received: " + receivedData);
// Echo the data back to the client
stream.Write(buffer, 0, bytesRead);
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
break;
}
}
}
client.Close();
Console.WriteLine("Client disconnected.");
}
static void Main(string[] args)
{
TcpListener server = null;
try
{
// Set the TCP port
int port = 13000;
IPAddress localAddr = IPAddress.Parse("127.0.0.1");
// Create a TcpListener
server = new TcpListener(localAddr, port);
// Start listening for client requests
server.Start();
Console.WriteLine("Server started. Waiting for connections...");
while (true)
{
// Perform a blocking call to accept requests.
TcpClient client = server.AcceptTcpClient();
Console.WriteLine("Client connected.");
// Handle the client request in a separate thread
Thread clientThread = new Thread(() => HandleClient(client));
clientThread.Start();
}
}
catch (SocketException e)
{
Console.WriteLine("SocketException: {0}", e);
}
finally
{
// Stop listening for new clients
if (server != null)
{
server.Stop();
}
}
}
}
TcpListener:用于监听传入的 TCP 请求。在这个例子中,服务器绑定到本地 IP 地址 127.0.0.1 和端口 13000。
AcceptTcpClient():这是一个阻塞调用,等待客户端连接。一旦有客户端连接,它会返回一个 TcpClient 对象。
HandleClient():这是处理每个客户端请求的方法。它在一个独立的线程中运行,以便服务器可以继续监听其他连接请求。
NetworkStream:用于读取和写入数据。在这个例子中,服务器从客户端读取数据并将其回显给客户端。
异常处理:代码中包含了基本的异常处理机制,以确保服务器在遇到错误时能够正确关闭连接并输出错误信息。
线程管理:每个客户端连接都在一个新的线程中处理,以确保服务器可以同时处理多个客户端。
如果你有任何问题或需要进一步的帮助,请告诉我!
上一篇:c#判断字符串为空
下一篇:c# asp.net
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站