网站首页 > 基础教程 正文
一、创建TCP连接
using System.Net.Sockets;
using System.Threading;
public event EventHandler<TcpEventArgs> NewCodeEvent;
bool isRuning = false;
TcpListener tcpListener;
Socket clientSocket;
Thread threadListen;
public void TurnOn()
{
isRuning = true;
tcpListener = new TcpListener(IPAddress.Parse(localIp), localPort);
tcpListener.Start();
threadListen = new Thread(Listen);
threadListen.Start();
}
public void TurnOff()
{
isRuning = false;
try
{
tcpListener.Stop();
}
catch (Exception)
{
}
}
二、监听数据
private void Listen()
{
while (isRuning)
{
try
{
clientSocket = tcpListener.AcceptSocket();
clientSocket.SendTimeout = 100;
clientSocket.ReceiveTimeout = 10000;
//监听到新的链接
if (!clientSocket.RemoteEndPoint.ToString().Contains(deviceIp))
{
try
{
clientSocket.Disconnect(true);
}
catch (Exception)
{
}
continue;
}
ReciveProcess();
}
catch (Exception ex)
{
}
}
}
private void ReciveProcess()
{
DateTime lastTime = DateTime.Now;
while (isRuning)
{
Thread.Sleep(1000);
bool ok = false;
try
{
ok = ReadData(clientSocket);
}
catch (Exception)
{
}
if (ok)
{
lastTime = DateTime.Now;
continue;
}
if ((DateTime.Now - lastTime).TotalSeconds > 4)
{
lastTime = DateTime.Now;
//设备长时间没有数据
break;
}
}
try
{
//强行关闭链
clientSocket.Disconnect(true);
}
catch (Exception)
{
}
}
三、解析数据
private bool ReadData(Socket socket)
{
Thread.Sleep(300);
byte[] buffer = new byte[1024];
int count = 0;
try
{
count = socket.Receive(buffer, SocketFlags.None);
}
catch (Exception)
{
}
if (count <= 0)
{
return false;
}
//有数据
string str = "";
str = Encoding.ASCII.GetString(buffer, 0, count);
str = str.Replace("\r", "").Replace("?", "");
//接收到的数据
if (NewCodeEvent == null)
{
return true;
}
TcpEventArgs(this, e);
return true;
}
猜你喜欢
- 2024-12-26 C#如何获取计算机或硬件信息 c#获取其他程序界面内容
- 2024-12-26 C#中把PDF导出为图片的方法分享 c# 生成 pdf
- 2024-12-26 C# 操作Excel文件之NPOI (一) c#操作excel文件读写
- 2024-12-26 解释C#中的任务并?库(TPL)及其?途
- 2024-12-26 解释 C# 中的任务并?库是如何?作的
- 2024-12-26 NPOI在C#中的用法 c++ npoi
- 2024-12-26 C#程序员参考手册 高清版 c#程序设计实用教程
- 2024-12-26 C#远程唤醒指定客户端代码 c#远程通讯
- 2024-12-26 一起来看看C#的圈复杂度 c# :?
- 2024-12-26 TCP网络编程中connect()、listen()和accept()三者之间的关系
- 05-24php实现三方支付的方法有哪些?
- 05-24CosmicSting 漏洞影响 75% 的 Adobe Commerce 和 Magento 网站
- 05-24Java接口默认方法的奇妙用途
- 05-24抽象类和接口
- 05-24详解Java抽象类和接口
- 05-24拒绝接口裸奔!开放API接口签名验证
- 05-24每天学Java!Java中的接口有什么作用
- 05-24Java:在Java中使用私有接口方法
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- deletesql (62)
- c++模板 (62)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)