Java.lang.InterruptedException被中止异常解决方案
本帖最后由 御坂主机 于 2024-6-20 13:50 编辑1. 引言
在网络编程中,TCP(传输控制协议)是一种面向连接、可靠的通信协议。通过TCP协议,我们可以实现客户端与服务器之间的稳定通信。在C#中,使用TCP来构建服务器应用程序非常常见。本文将详细讲解如何在C#中编写一个TCP服务器,并且能够处理多个客户端的并发连接。
2. 基本概念
在实现TCP服务器之前,我们需要了解一些基本概念:
(1) TCP Listener:用于监听传入的客户端连接请求。
(2) TCP Client:表示一个与服务器连接的客户端。
(3) 多线程:为了处理多个客户端的并发连接,我们需要使用多线程。
3. 实现步骤
3.1 创建TCP服务器
首先,我们需要创建一个TCP服务器,监听指定端口的连接请求。
示例:
int port = 5000;
TcpListener listener = new TcpListener(IPAddress.Any, port);
listener.Start();
Console.WriteLine("Server started on port " + port);
3.2 接受客户端连接
服务器需要接受客户端的连接请求,并创建一个新的线程来处理每个连接。这样可以确保服务器能够同时处理多个客户端。
示例:
while (true) {
TcpClient client = listener.AcceptTcpClient();
Console.WriteLine("Client connected");
Thread clientThread = new Thread(() => HandleClient(client));
clientThread.Start();
}
3.3 处理客户端连接
在处理客户端连接的线程中,我们需要读取和发送数据。这里我们将实现一个简单的回显服务器,即服务器收到什么数据,就返回什么数据给客户端。
示例:
void HandleClient(TcpClient client) {
NetworkStream stream = client.GetStream();
byte[] buffer = new byte;
int bytesRead;
try {
while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) != 0) {
Console.WriteLine("Received: " + Encoding.ASCII.GetString(buffer, 0, bytesRead));
stream.Write(buffer, 0, bytesRead);
}
} catch (Exception e) {
Console.WriteLine("Error: " + e.Message);
} finally {
client.Close();
Console.WriteLine("Client disconnected");
}
}
4. 完整示例
以下是一个完整的TCP服务器示例代码,它能够处理多个客户端的并发连接。
示例:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
class Program {
static void Main(string[] args) {
int port = 5000;
TcpListener listener = new TcpListener(IPAddress.Any, port);
listener.Start();
Console.WriteLine("Server started on port " + port);
while (true) {
TcpClient client = listener.AcceptTcpClient();
Console.WriteLine("Client connected");
Thread clientThread = new Thread(() => HandleClient(client));
clientThread.Start();
}
}
static void HandleClient(TcpClient client) {
NetworkStream stream = client.GetStream();
byte[] buffer = new byte;
int bytesRead;
try {
while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) != 0) {
Console.WriteLine("Received: " + Encoding.ASCII.GetString(buffer, 0, bytesRead));
stream.Write(buffer, 0, bytesRead);
}
} catch (Exception e) {
Console.WriteLine("Error: " + e.Message);
} finally {
client.Close();
Console.WriteLine("Client disconnected");
}
}
}
5. 结论
通过本文的介绍,我们了解了如何在C#中创建一个能够处理并发连接的TCP服务器。核心步骤包括创建TcpListener监听连接请求、使用多线程处理每个客户端连接、并在每个线程中处理数据的读取和写入。希望本文能帮助开发者更好地理解和实现C#中的TCP服务器,为实现更复杂的网络应用打下基础。
------------------------------------------------------------------------------------------------------------------------------------------
========御 坂 主 机========
>> VPS主机 服务器 前沿资讯 行业发布 技术杂谈 <<
>> 推广/合作/找我玩TG号 : @Misaka_Offical <<
-------------------------------------------------------------------------------------------------------------------------------------------
页:
[1]