【C#】TCP 协议的服务器端监听

概要

主要针对工业控制自动化场景的应用,比如一些扫码枪、读码器、视觉软件等任何可以用TCP/IP协议通信的设备或者软件,主要使用TcpListener 类来进行操作,底层是基于Socket协议来写的,不过并不用关心底层,拿来用就好

代码部分

提示:是在winform的环境下使用的这段代码,其他暂时没有测试

using System.Net.Sockets

void StartListening(int port)//port是要进行监听的端口
        {
            try
            {
                // 创建 TcpListener 实例
                //可以指定要监听的IP地址,这里是所有往这个端口发消息的IP
                TcpListener listener = new TcpListener(IPAddress.Any, port);
                listener.Start();//开始监听
                while (true)//始终在监听
                {
                    // 等待客户端连接
                    TcpClient client = listener.AcceptTcpClient();
                    //AcceptTcpClient 方法会阻塞,直到有客户端连接。
                    
                     // 处理客户端连接
                     //可以用线程池来处理链接
                     //threadPool.QueueUserWorkItem(HandleClient, client);
                     HandleClient(client);
                }
            }
            catch (Exception ex)
            {
				//捕获异常
            }
        }
void HandleClient(TcpClient state)
        {
            TcpClient client = state;
            try
            {
                // 获取网络流,通过 NetworkStream 对象与客户端进行数据读写
                NetworkStream stream = client.GetStream();

                // 读取数据
                byte[] buffer = new byte[1024];
                int bytesRead = stream.Read(buffer, 0, buffer.Length);
                string data = Encoding.Default.GetString(buffer, 0, bytesRead);//注意这里的编码格式,从客户端读取数据并解码为字符串。
                ///
                在这里写收到数据后处理的代码
                //
                
                //发送响应数据,一般不需要写除非有需求
                string response = "服务器已收到: " + data;
                byte[] responseData = Encoding.UTF8.GetBytes(response);
                stream.Write(responseData, 0, responseData.Length);
            }
            catch (Exception ex)
            {
                //捕获异常
            }
            finally
            {
                // 关闭连接
                client.Close();
            }
        }

TcpListener 的核心属性

属性名说明
LocalEndpoint获取 TcpListener 绑定的本地终结点(IP 地址和端口)。
Server获取底层的 Socket 对象。
ExclusiveAddressUse设置是否允许独占绑定到指定地址和端口。

TcpListener 的核心方法

方法名说明
Start()开始监听客户端连接。
Stop()停止监听客户端连接。
AcceptTcpClient()同步接受客户端连接,返回 TcpClient 对象。
AcceptTcpClientAsync()异步接受客户端连接,返回 Task,适合异步编程。
Pending()检查是否有挂起的连接请求。

总结

TcpListener适合场景:

简单的 TCP 服务器开发。

需要快速实现 TCP 监听和客户端连接处理的场景。

适合不需要复杂底层控制的场景。

功能相对简单,适合小型项目,如果需要更底层的控制(如自定义协议或高性能需求),建议直接使用 Socket 类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值