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 byte[1024 * 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 byte[len];

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 { }

}

}

相关推荐
Seven979 分钟前
Tomcat的架构设计和启动过程详解
java
Mr-Wanter9 分钟前
踩坑记录:IDEA 启动服务连续三次 OOM 内存溢出完整解决
java·ide·intellij-idea·oom
阿巴斯甜13 分钟前
User::getName含义?
java
2601_9498180920 分钟前
SpringBoot项目集成ONLYOFFICE
java·spring boot·后端
埃伊蟹黄面24 分钟前
应用层HTTP协议
linux·网络·网络协议·http
阿巴斯甜25 分钟前
int sum = list.stream().reduce(0, Integer::sum); 含义?
java
阿巴斯甜26 分钟前
Stream 的使用:
java
IMPYLH28 分钟前
【无标题】
linux·运维·服务器·网络·bash
Foreer黑爷30 分钟前
Java并发工具箱:CountDownLatch与CyclicBarrier使用指南
java·开发语言·jvm
亦暖筑序36 分钟前
Spring AI Alibaba + RAG 实战:知识库检索模块从设计到落地
java·开源