一个完整的 TCP 服务器监听示例(C#)

cs 复制代码
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

class TcpServer
{
    static void Main()
    {
        // 1. 创建 TCP 流式套接字(与你提供的代码一致)
        Socket serverSocket = new Socket(SocketType.Stream, ProtocolType.Tcp);

        try
        {
            // 2. 绑定本地端点(IP 地址设为 0.0.0.0 表示监听所有网络接口,端口设为 8888)
            IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, 8888);
            serverSocket.Bind(localEndPoint);

            // 3. 开始监听(参数为最大挂起连接数)
            serverSocket.Listen(10);
            Console.WriteLine("服务器已启动,正在监听端口 8888...");

            // 4. 循环接受客户端连接(阻塞式)
            while (true)
            {
                // 接受客户端连接,返回一个新的 Socket 用于与该客户端通信
                Socket clientSocket = serverSocket.Accept();
                Console.WriteLine($"新客户端连接:{clientSocket.RemoteEndPoint}");

                // 示例:向客户端发送欢迎消息
                byte[] welcomeMsg = Encoding.UTF8.GetBytes("欢迎连接到服务器!");
                clientSocket.Send(welcomeMsg);

                // 此处可添加处理客户端消息的逻辑(通常建议用多线程/异步处理)
                // 简单示例:关闭客户端连接(实际应用中需根据需求处理)
                clientSocket.Shutdown(SocketShutdown.Both);
                clientSocket.Close();
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"发生错误:{ex.Message}");
        }
        finally
        {
            // 关闭服务器套接字
            serverSocket.Close();
        }
    }
}

关键步骤说明:

  1. 创建套接字new Socket(SocketType.Stream, ProtocolType.Tcp) 正确创建了 TCP 套接字。
  2. 绑定端点Bind 方法将套接字与本地 IP 和端口关联(IPAddress.Any 表示监听所有可用网络接口)。
  3. 开始监听Listen(10) 启动监听,参数 10 表示最大允许的挂起连接队列长度。
  4. 接受连接Accept() 是阻塞方法,会等待客户端连接,返回的 clientSocket 用于与该客户端单独通信。

注意事项:

  • 实际应用中,建议使用 异步方法 (如 AcceptAsync)或多线程处理客户端连接,避免主线程阻塞。
  • 端口号(示例中为 8888)需确保未被占用,且防火墙允许该端口的入站连接。
  • 通信完成后需关闭 clientSocketserverSocket 以释放资源。
相关推荐
XiYang-DING7 分钟前
【Java EE】TCP—延时应答
网络·tcp/ip·java-ee
XiYang-DING8 分钟前
【Java EE】TCP—流量控制和拥塞控制
java·tcp/ip·java-ee
Xin_ye1008621 分钟前
C# 零基础到精通教程 - 第八章:面向对象编程(进阶)——继承与多态
开发语言·c#
程序员榴莲21 分钟前
网络编程入门 Python Socket 实现一个简单的用户认证系统
服务器·网络·python
ZStack开发者社区28 分钟前
全球化2.0 | ZStack亮相印尼云计算与数据中心大会 以新一代云底座助力数字印尼建设
服务器·云计算·gpu算力
DFT计算杂谈33 分钟前
VASP新手入门: IVDW 色散修正参数
linux·运维·服务器·python·算法
programhelp_1 小时前
Google 2026 New Grad SDE VO 三轮面试详解 | 含Behavioral、Coding、Design
java·服务器·数据库
樱桃花下的小猫1 小时前
腐蚀Rust-服务器插件模组教程
服务器·新手友好·云鸢互联·零门槛一键开服·腐蚀rust
青梅橘子皮1 小时前
Linux---开发工具(2)(makefile、进度条、git、gdb)
linux·运维·服务器
Ether IC Verifier1 小时前
TCP/IP协议握手原理详解——结合以太网连接过程
服务器·网络·数据库·网络协议·tcp/ip