TCP监听--监听指定IP的端口号

using HIBase.Library.Helper;

using System;

using System.Net;

using System.Net.Sockets;

using System.Threading;

public class TcpReceiver

{

private TcpListener _listener;

private bool _isRunning;

private const int PORT = 2001;//自行指定

// 启动监听(外部调用)

public void Start()

{

if (_isRunning) return;

_isRunning = true;

new Thread(ListenThread) { IsBackground = true }.Start();

}

// 监听线程

private void ListenThread()

{

try

{

_listener = new TcpListener(IPAddress.Any, PORT);//自行制定

_listener.Start();

while (_isRunning)

{

// 等待客户端连接

if (_listener.Pending())

{

TcpClient client = _listener.AcceptTcpClient();

// 每次来新连接,都开独立线程接收

new Thread(() => ReceiveClient(client))

{

IsBackground = true

}.Start();

}

Thread.Sleep(10);

}

}

catch

{

Thread.Sleep(1000);

if (_isRunning) ListenThread();

}

}

// 处理一个客户端连接(支持持续收发)

private void ReceiveClient(TcpClient client)

{

byte\[\] buffer = new byte1024 \* 8;

try

{

using (NetworkStream stream = client.GetStream())

{

while (_isRunning && client.Connected)

{

if (stream.DataAvailable)

{

int len = stream.Read(buffer, 0, buffer.Length);

if (len <= 0) break;

byte\[\] data = new bytelen;

Array.Copy(buffer, data, len);

// 持续处理数据

ProcessReceivedData(data);

}

Thread.Sleep(10);

}

}

}

catch

{

}

finally

{

try { client.Close(); } catch { }

}

}

private void ProcessReceivedData(byte\[\] data)

{

try

{

//业务处理逻辑

}

catch { }

}

// 停止

public void Stop()

{

_isRunning = false;

try { _listener.Stop(); } catch { }

}

}

相关推荐
轻刀快马12 小时前
从繁琐到极简,从幻象到本质:Spring AOP 架构演进与实战避坑指南
java·spring·架构
weixin_BYSJ198712 小时前
springboot旅游管理系统04470(附源码+开发文档+部署教程)
java·spring boot·python·算法·django·flask·旅游
8Qi812 小时前
LeetCode 209. 长度最小的子数组(Minimum Size Subarray Sum)
java·算法·leetcode·双指针·滑动窗口
方也_arkling12 小时前
【Java-Day12】接口
java·开发语言
SimonKing12 小时前
Java程序员接入AI的另一种姿势:LangChain4j
java·后端·程序员
哇嘎呀12 小时前
OSPF笔记
网络·笔记
vensli12 小时前
消息跨端架构演进:基于 C++ 的多端一致性研发框架实践
java·人工智能·软件工程·安卓
云烟成雨TD12 小时前
Spring AI Alibaba 1.x 系列【70】思考模式
java·人工智能·spring
逸Y 仙X12 小时前
文章六:ElasticSearch 集群通信安全权限
java·大数据·服务器·elasticsearch·搜索引擎·全文检索
瑞雪兆丰年兮12 小时前
[从0开始学Java|第十六、十七天]项目阶段(拼图小游戏)
java·开发语言