c# System.Net.Sockets =》TcpListener用法
2024-09-07 04:19:11
private TcpListener _listener;
#region 初始化 listener
public override void Init()
{
try
{
DevInfo.Read();
var localaddr = IPAddress.Parse(Ip);
var port = Convert.ToInt32(port);
_listener = new TcpListener(localaddr, port);
}
finally
{
StatusChangedEvent?.Invoke(Status);
}
}
#endregion
开始运行
public override void Start()
{
Init();
_listener?.Start();
Task.Factory.StartNew(MonitTcpClientConnect);
}
监听
private void MonitTcpClientConnect()
{
while (true)
{
try
{
var client = _listener.AcceptTcpClient();
Task.Factory.StartNew(MonitorRecvData, client);
}
catch
{
_listener.Stop();
_listener = null; return;
}
}
}
处理事件
private void MonitorRecvData(object obj)
{
try
{
var tcpClient = obj as TcpClient;
if (tcpClient == null)
{
return;
} var buffer = new byte[];var stream = tcpClient.GetStream();
while (true)
{
var count = stream.Read(buffer, , buffer.Length); if (count == )
{
throw new Exception("客户端下线");
} var str = Encoding.ASCII.GetString(buffer, , count);
}
}
catch
{
// ignored
}
}
最新文章
- jQuery.first() 函数
- Hibernate自动创建表
- Ceph与OpenStack的Glance相结合
- http协议客户端向服务器端请求时一般需要发送的内容
- android boot.img 结构
- codeforces 334A - Candy Bags
- jQuery中实现自定义方法的扩展
- freemaker的基本语法
- SVG 教程
- 一张图看懂 JS 的事件机制
- 理解Linux文件系统之inode
- struts2和spring mvc的比较
- 用redis的订阅发布解决了扫码支付实时响应的问题
- 蓝桥每周一题之1. 3n+1 问题
- UOJ268 [清华集训2016] 数据交互 【动态DP】【堆】【树链剖分】【线段树】
- [转] 前后端分手大师——MVVM 模式
- 可空类型(Nullable)
- springboot+shiro+redis(单机redis版)整合教程-续(添加动态角色权限控制)
- Docker技术入门与实战 第二版-学习笔记-8-网络功能network-1-单个host上的容器网络
- Leetcode 784
热门文章
- KB奇遇记(3):糟糕的IT现状
- apache jmeter 使用
- [b0042] python 归纳 (二七)_gui_tkinter_基本使用
- MySQL数据篇(五)--SQL对数据进行按月统计,或对数据进行按星期统计
- Hive性能调优(一)----文件存储格式及压缩方式选择
- 5.Python网络编程_通过继承实现多线程
- 【BZOJ1443】[JSOI2009]游戏Game(二分图+博弈)
- C++学习一 结构与结构体
- Html学习之十四(阴影文字的设计)
- 201871010111-刘佳华《面向对象程序设计(java)》第十三周学习总结