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-输入日期,计算前后几天的日期
又遇到新问题了,想要根据获取的日期,计算出前面两天的日期。网上找了半天,全都是写获取当天日期,然后计算昨天的日期,照葫芦画瓢也没改出来想要的,最后求助了开发同学。 先放上网上获取当天,计…...
Zabbix 7.0 安装
在zabbix官网中有着比较完善的安装步骤,针对不同的系统都有。可以直接按照举例说明进行安装。本文只是针对其提供的安装步骤进行一些说明解释补充。 安装环境 操作系统版本:AlmaLinux 9.4(10.10.20.200)zabbix版本:7.…...
软考高级-系统架构设计师
2024广东深圳考试时间 报考人员可登录中国计算机技术职业资格网(http://www.ruankao.org.cn)进行网上报名,报名前须扫码绑定个人微信,不允许代报名。 上半年考试报名信息填报时间:2024年3月25日9:00-4月2日…...
Notepad++ 安装 compare 插件
文章目录 文章介绍对比效果安装过程参考链接 文章介绍 compare 插件用于对比文本差异 对比效果 安装过程 搜索compare插件 参考链接 添加链接描述...
大数据技术原理-spark的安装
摘要 本实验报告详细记录了在"大数据技术原理"课程中进行的Spark安装与应用实验。实验环境包括Spark、Hadoop和Java。实验内容涵盖了Spark的安装、配置、启动,以及使用Spark进行基本的数据操作,如读取本地文件、文件内容计数、模式匹配和行数…...
第四范式上线搜广推一体化平台 赋能企业高效增长
产品上新 Product Release 今天,第四范式产品再度上新,正式升级并推出的“搜广推”一体化平台——天枢。 天枢拥有全面的用户画像分析、端到端的搜索推荐一体化、一站式流量运营管理等能力,集合智能搜索、智能推荐和智能推广三大能力于一身&a…...
智能小程序 Ray 开发面板 SDK —— 智能设备模型通用能力一键执行 SDK 汇总(一)
getTapToRunRules 描述 查询当前家庭下可绑定的一键执行列表,会去掉失效或自动化规则。 请求参数 参数数据类型说明是否必填devIdstring设备 ID,默认从设备环境中取否gidstring家庭 ID,默认从当前家庭中取否containStandardZigBeeboolean…...
将时间用于符合当下的未来思考——读《纳瓦尔宝典》
在财富积累的篇章中,倡导的核心理念是“不要通过出租时间来赚取收入”。沿着这条道路,可以通过以下智慧指引来避免不必要的迂回:首先,不要让自己深陷于日常的琐碎事务中,而应以开阔的心胸去探索和吸收新的知识。其次&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的容器镜像支持,但考虑到 Rocky-9对RHEL/CentOS-Stream-9进行了binary级别的兼容,因此在CentOS-Stream-9上仿冒Rocky…...
Python机器学习实战:分类算法之支持向量机-垃圾邮件识别
为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能,从而更快地掌握解决问题所需的能力。 目录 支持向量机算法介绍 练习题 Python代码与分析 支持向量机和朴素贝叶斯的联系 支持向量机算法介绍 支持向量机&#…...
秒懂Linux之自动化构建工具-make/Makefile
目录 一.前文摘要 二.make/Makefile 一.前文摘要 在学习自动化构建工具前我们先来补充一下动静态库的相关指令 动态库指令 gcc -o 文件(重命名) 源文件 静态库指令 gcc -o 文件(重命名) 源文件 -static 二.make/Makefile 怎么形…...
.net core + vue 搭建前后端分离的框架
目录 步骤一:创建.NET Core后端项目 步骤二:创建Vue.js前端项目 步骤三:集成后端和前端项目 步骤一:创建.NET Core后端项目 安装.NET Core SDK: 确保你的开发环境中已安装了最新版本的.NET Core SDK。你可以从 .NET …...
小阿轩yx-KVM+GFS 分布式存储系统构建 KVM 高可用
小阿轩yx-KVMGFS 分布式存储系统构建 KVM 高可用 案例分析 案例概述 使用 KVM 及 GlusterFS 技术,结合起来实现 KVM 高可用利用 GlusterFS 分布式复制卷对 KVM 虚拟机文件进行分布存储和冗余 分布式复制卷 主要用于需要冗余的情况下把一个文件存放在两个或两个…...
centos安装mysql 5.7版本
因为要继续第二阶段的学习,windows里面的mysql版本,很多设置没有。因此弄了一个虚拟机,安装了centos,在里面安装mysql。 看了《centos安装mysql 5.7版本》里面有设置my.cnf文件,这个在虚拟机里面编辑,手动敲…...
SQL——查询sql执行顺序
在SQL查询中,虽然我们在编写查询时遵循一定的逻辑顺序(SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY),但实际上,数据库在执行这些查询时遵循的是不同的物理执行顺序。这个物理执行顺序是数据库管理系统࿰…...
钉耙编程(3)
1001深度自同构 Problem Description 对于无向图中的点,定义一个点的度为与其相连的边的条数。 对于一棵有根树,定义一个点的深度为该点到根的距离。 对于由若干有根树构成的森林,定义该森林是深度自同构的,当且仅当森林中任意…...
python 线程池处理文件
使用多线程来加速文件复制的过程,可以使用Python的concurrent.futures模块中的ThreadPoolExecutor。代码如下: import glob import os import shutil from concurrent.futures import ThreadPoolExecutordef copy_image(image):imagepath image.replace…...
AI技术和大模型对人才市场的影响
012024 AI技术和大模型 2024年AI技术和大模型呈现出多元化和深入融合的趋势,以下是一些关键的技术方向和特点: 1. 生成式AI 生成式AI(Generative AI)在2024年继续快速发展,它能够创造全新的内容,而不仅仅…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
