当前位置: 首页 > news >正文

C#用Socket实现TCP客户端

1、TCP客户端实现代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;namespace PtLib.TcpClient
{public delegate void TcpClientReceivedEventHandler(TcpClientStateEventArgs args);public class TcpClient{//接收委托public event TcpClientReceivedEventHandler TcpReceived;//private string _ip = "127.0.0.1";//private int _port = 8080;//Socket socket = null;//Thread thread = null;/// <summary>/// /// </summary>/// <param name="ip"></param>/// <param name="port"></param>public TcpClient(string ip,int port) { _ip = ip;_port = port;}/// <summary>/// /// </summary>public void Open(){socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);IPEndPoint endPoint=new IPEndPoint(IPAddress.Parse(_ip), _port);socket.Connect(endPoint);thread = new Thread(Receiver);thread.IsBackground = true;thread.Start();}private void Receiver(){while (true){byte[] buffer = new byte[1024*1024];int length = socket.Receive(buffer);if(length > 0){byte[] b = new byte[length];Buffer.BlockCopy(buffer, 0, b, 0, length);TcpClientStateEventArgs args = new TcpClientStateEventArgs();args.buffer = b;TcpReceived?.Invoke(args);}}}public void Send(byte[] data){socket.Send(data);}/// <summary>/// /// </summary>public void Close() {socket?.Close();thread?.Abort();socket = null;thread = null;}}/// <summary>/// Tcp状态事件参数类/// </summary>public class TcpClientStateEventArgs : EventArgs{public byte[] buffer = null;}
}

2、应用程序

using PtLib.TcpServer;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace TcpClient
{public partial class Form1 : Form{PtLib.TcpClient.TcpClient tcpClient = null;/// <summary>/// /// </summary>public Form1(){InitializeComponent();}/// <summary>/// /// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnConnect_Click(object sender, EventArgs e){if (btnConnect.Text.Equals("连接")){btnConnect.Text = "断开";string ip = tbClientIp.Text.Trim();int port = int.Parse(tbClientPort.Text.Trim());tcpClient = new PtLib.TcpClient.TcpClient(ip, port);tcpClient.Open();tcpClient.TcpReceived += TcpClient_TcpReceived;}else{btnConnect.Text = "连接";tcpClient.Close();}}private void TcpClient_TcpReceived(PtLib.TcpClient.TcpClientStateEventArgs args){string str = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff") + ":";str += Encoding.UTF8.GetString(args.buffer);this.Invoke(new Action(() =>{lbxReceive.Items.Add(str);}));}/// <summary>/// /// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnSend_Click(object sender, EventArgs e){string str = tbxSend.Text.Trim();byte[] sendBytes = Encoding.UTF8.GetBytes(str);tcpClient.Send(sendBytes);}}
}

3、实现效果
在这里插入图片描述

相关文章:

C#用Socket实现TCP客户端

1、TCP客户端实现代码 using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks;namespace PtLib.TcpClient {public delegate void Tcp…...

jmeter-beanshell学习15-输入日期,计算前后几天的日期

又遇到新问题了&#xff0c;想要根据获取的日期&#xff0c;计算出前面两天的日期。网上找了半天&#xff0c;全都是写获取当天日期&#xff0c;然后计算昨天的日期&#xff0c;照葫芦画瓢也没改出来想要的&#xff0c;最后求助了开发同学。 先放上网上获取当天&#xff0c;计…...

Zabbix 7.0 安装

在zabbix官网中有着比较完善的安装步骤&#xff0c;针对不同的系统都有。可以直接按照举例说明进行安装。本文只是针对其提供的安装步骤进行一些说明解释补充。 安装环境 操作系统版本&#xff1a;AlmaLinux 9.4&#xff08;10.10.20.200&#xff09;zabbix版本&#xff1a;7.…...

软考高级-系统架构设计师

2024广东深圳考试时间 报考人员可登录中国计算机技术职业资格网&#xff08;http://www.ruankao.org.cn&#xff09;进行网上报名&#xff0c;报名前须扫码绑定个人微信&#xff0c;不允许代报名。 上半年考试报名信息填报时间&#xff1a;2024年3月25日9:00&#xff0d;4月2日…...

Notepad++ 安装 compare 插件

文章目录 文章介绍对比效果安装过程参考链接 文章介绍 compare 插件用于对比文本差异 对比效果 安装过程 搜索compare插件 参考链接 添加链接描述...

大数据技术原理-spark的安装

摘要 本实验报告详细记录了在"大数据技术原理"课程中进行的Spark安装与应用实验。实验环境包括Spark、Hadoop和Java。实验内容涵盖了Spark的安装、配置、启动&#xff0c;以及使用Spark进行基本的数据操作&#xff0c;如读取本地文件、文件内容计数、模式匹配和行数…...

第四范式上线搜广推一体化平台 赋能企业高效增长

产品上新 Product Release 今天&#xff0c;第四范式产品再度上新&#xff0c;正式升级并推出的“搜广推”一体化平台——天枢。 天枢拥有全面的用户画像分析、端到端的搜索推荐一体化、一站式流量运营管理等能力&#xff0c;集合智能搜索、智能推荐和智能推广三大能力于一身&a…...

智能小程序 Ray 开发面板 SDK —— 智能设备模型通用能力一键执行 SDK 汇总(一)

getTapToRunRules 描述 查询当前家庭下可绑定的一键执行列表&#xff0c;会去掉失效或自动化规则。 请求参数 参数数据类型说明是否必填devIdstring设备 ID&#xff0c;默认从设备环境中取否gidstring家庭 ID&#xff0c;默认从当前家庭中取否containStandardZigBeeboolean…...

特大喜讯:我的作品被河北某大学选做教材

...

将时间用于符合当下的未来思考——读《纳瓦尔宝典》

在财富积累的篇章中&#xff0c;倡导的核心理念是“不要通过出租时间来赚取收入”。沿着这条道路&#xff0c;可以通过以下智慧指引来避免不必要的迂回&#xff1a;首先&#xff0c;不要让自己深陷于日常的琐碎事务中&#xff0c;而应以开阔的心胸去探索和吸收新的知识。其次&a…...

CentOS-Stream-9仿冒Rocky-9通过Kolla-ansible部署OpenStack 2024.1

CentOS-Stream-9仿冒Rocky-9通过Kolla-ansible部署OpenStack 2024.1 OpenStack及Kolla项目的最新稳定版产品不再提供对CentOS-Stream-9的容器镜像支持&#xff0c;但考虑到 Rocky-9对RHEL/CentOS-Stream-9进行了binary级别的兼容&#xff0c;因此在CentOS-Stream-9上仿冒Rocky…...

Python机器学习实战:分类算法之支持向量机-垃圾邮件识别

为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能&#xff0c;从而更快地掌握解决问题所需的能力。 目录 支持向量机算法介绍 练习题 Python代码与分析 支持向量机和朴素贝叶斯的联系 支持向量机算法介绍 支持向量机&#…...

秒懂Linux之自动化构建工具-make/Makefile

目录 一.前文摘要 二.make/Makefile 一.前文摘要 在学习自动化构建工具前我们先来补充一下动静态库的相关指令 动态库指令 gcc -o 文件&#xff08;重命名&#xff09; 源文件 静态库指令 gcc -o 文件&#xff08;重命名&#xff09; 源文件 -static 二.make/Makefile 怎么形…...

.net core + vue 搭建前后端分离的框架

目录 步骤一&#xff1a;创建.NET Core后端项目 步骤二&#xff1a;创建Vue.js前端项目 步骤三&#xff1a;集成后端和前端项目 步骤一&#xff1a;创建.NET Core后端项目 安装.NET Core SDK&#xff1a; 确保你的开发环境中已安装了最新版本的.NET Core SDK。你可以从 .NET …...

小阿轩yx-KVM+GFS 分布式存储系统构建 KVM 高可用

小阿轩yx-KVMGFS 分布式存储系统构建 KVM 高可用 案例分析 案例概述 使用 KVM 及 GlusterFS 技术&#xff0c;结合起来实现 KVM 高可用利用 GlusterFS 分布式复制卷对 KVM 虚拟机文件进行分布存储和冗余 分布式复制卷 主要用于需要冗余的情况下把一个文件存放在两个或两个…...

centos安装mysql 5.7版本

因为要继续第二阶段的学习&#xff0c;windows里面的mysql版本&#xff0c;很多设置没有。因此弄了一个虚拟机&#xff0c;安装了centos&#xff0c;在里面安装mysql。 看了《centos安装mysql 5.7版本》里面有设置my.cnf文件&#xff0c;这个在虚拟机里面编辑&#xff0c;手动敲…...

SQL——查询sql执行顺序

在SQL查询中&#xff0c;虽然我们在编写查询时遵循一定的逻辑顺序&#xff08;SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY&#xff09;&#xff0c;但实际上&#xff0c;数据库在执行这些查询时遵循的是不同的物理执行顺序。这个物理执行顺序是数据库管理系统&#xff0…...

钉耙编程(3)

1001深度自同构 Problem Description 对于无向图中的点&#xff0c;定义一个点的度为与其相连的边的条数。 对于一棵有根树&#xff0c;定义一个点的深度为该点到根的距离。 对于由若干有根树构成的森林&#xff0c;定义该森林是深度自同构的&#xff0c;当且仅当森林中任意…...

python 线程池处理文件

使用多线程来加速文件复制的过程&#xff0c;可以使用Python的concurrent.futures模块中的ThreadPoolExecutor。代码如下&#xff1a; import glob import os import shutil from concurrent.futures import ThreadPoolExecutordef copy_image(image):imagepath image.replace…...

AI技术和大模型对人才市场的影响

012024 AI技术和大模型 2024年AI技术和大模型呈现出多元化和深入融合的趋势&#xff0c;以下是一些关键的技术方向和特点&#xff1a; 1. 生成式AI 生成式AI&#xff08;Generative AI&#xff09;在2024年继续快速发展&#xff0c;它能够创造全新的内容&#xff0c;而不仅仅…...

告别手动上传!RAGFlow 0.22.0 数据源同步实战:以S3和Notion为例的保姆级配置

告别手动上传&#xff01;RAGFlow 0.22.0 数据源同步实战&#xff1a;以S3和Notion为例的保姆级配置 如果你还在为知识库维护中频繁的手动上传文件而烦恼&#xff0c;RAGFlow 0.22.0版本的数据源功能将成为你的效率救星。这个功能彻底改变了传统文件管理方式&#xff0c;让数据…...

香橙派OrangePi One到手必做:Linux系统首次启动自动扩容rootfs的保姆级验证指南

香橙派OrangePi One开箱指南&#xff1a;首次启动自动扩容rootfs的完整验证流程 第一次拿到香橙派开发板时&#xff0c;最让人困惑的莫过于如何确认系统是否成功利用了TF卡的全部空间。作为嵌入式Linux新手&#xff0c;我清楚地记得自己第一次启动OrangePi One时的忐忑——那些…...

nanobot实操手册:Qwen3-4B模型温度(temperature)、top_p、max_tokens参数详解

nanobot实操手册&#xff1a;Qwen3-4B模型温度&#xff08;temperature&#xff09;、top_p、max_tokens参数详解 1. nanobot简介与快速上手 nanobot是一款超轻量级的个人人工智能助手&#xff0c;灵感来源于OpenClaw项目。它最大的特点是代码量极小&#xff0c;仅需约4000行…...

某高校学生考微软MOS认证加学分

临近毕业季&#xff0c;到底是谁的学分还没有修够&#xff1f;微软MOS认证证书也可以加学分&#xff0c;每天学习两个小时&#xff0c;一周就可以完成考试&#xff0c;当天就出证书&#xff01;&#x1f4cc;关于难度选择版本难度&#xff1a;2016 < 2019 < 365&#xff…...

终极指南:用Java打造你的专属微信机器人 - 深入解析wechat-api框架

终极指南&#xff1a;用Java打造你的专属微信机器人 - 深入解析wechat-api框架 【免费下载链接】wechat-api &#x1f5ef; wechat-api by java7. 项目地址: https://gitcode.com/gh_mirrors/we/wechat-api 想象一下这样的场景&#xff1a;每天早上7点&#xff0c;你的微…...

云上实战说 | TapNow x Google Cloud 带您体验从灵感到资产的秒级转化

以下文章来源于谷歌云服务&#xff0c;作者 Google Cloud基于 Google Cloud Veo 和 Nano Banana 的前沿能力&#xff0c;TapNow (万物形象所) 邀您体验生成式 AI 如何重塑品牌与自我表达。现场实时生成风格化写真、宠物贴纸及周边&#xff0c;直观感受从灵感到资产的极速转化&a…...

Go语言的context.WithCancel取消信号传播与资源清理在分布式系统中的协调

Go语言的context.WithCancel取消信号传播与资源清理在分布式系统中的协调 在分布式系统中&#xff0c;任务的取消与资源清理是确保系统稳定性和高效性的关键挑战。Go语言通过context包提供了优雅的解决方案&#xff0c;尤其是context.WithCancel机制&#xff0c;能够实现跨组件…...

STM32实现智能酒驾监测系统设计

基于STM32的酒后驾车监测报警系统设计与实现1. 项目概述1.1 系统背景酒后驾车是全球交通事故的主要诱因之一&#xff0c;传统的人工检测方法存在效率低、覆盖范围有限等问题。随着嵌入式系统和物联网技术的发展&#xff0c;智能化的酒精监测系统成为解决这一问题的有效方案。1.…...

R语言新手必看:clusterProfiler功能富集分析从安装到实战(附常见报错解决方案)

R语言实战&#xff1a;clusterProfiler功能富集分析全流程指南 第一次接触功能富集分析时&#xff0c;我被那些密密麻麻的基因列表和复杂的生物学术语搞得晕头转向。直到发现了clusterProfiler这个神器&#xff0c;它就像生物信息学分析中的瑞士军刀&#xff0c;把复杂的富集过…...

深入解析卷积层参数量与FLOPs的计算原理及优化策略

1. 卷积层参数量计算原理 要理解卷积层的参数量计算&#xff0c;我们先从一个实际例子入手。假设有个输入特征图尺寸是64643&#xff08;HWC&#xff09;&#xff0c;卷积核大小33&#xff0c;输出通道数64&#xff0c;带偏置项。这时候参数量是多少呢&#xff1f; 参数量的构…...