御坂主机 发表于 2024-6-18 12:20:48

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]
查看完整版本: Java.lang.InterruptedException被中止异常解决方案