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

}

}

相关推荐
weixin_440784116 小时前
【HandlerThread实现原理】
android·java·开发语言
leoZ2316 小时前
本地跑大模型实战(七):llama.cpp 性能调优,让推理更快更省
java·人工智能·spring·生成对抗网络·语言模型·自然语言处理·llama
mubei-1238 小时前
SpringDAO的用法
java·开发语言·数据库
happymagic8 小时前
java spring boot做的jar包程序,如何实现自动运行启动
java·运维·服务器·spring boot·jar
abbgogo9 小时前
TCP/IP、OSI 与常见网络协议知识点总结
网络·网络协议·计算机网络
都叫我大帅哥10 小时前
给 Java 程序员的 CSRF 攻击详解:从原理到防御实战
java
江南十四行11 小时前
Spring框架核心(上)——IoC控制反转与DI依赖注入详解
java·后端·spring
FungLeo11 小时前
Flutter 接入 Alice 调试浮窗:一个顶层 final 抢跑,把 release 网络整没了
网络·flutter
fb_1234512 小时前
Linux磁盘分区从入门到实操:MBR_GPT全解析+分区工具实战指南
java·linux·gpt
abbgogo12 小时前
堆叠、DHCP 与链路聚合总结
网络·网络协议