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

WinForm之TCP服务端

目录

一 原型

二 源码


一 原型

二 源码

using System.Net;
using System.Net.Sockets;
using System.Text;namespace TCP网络服务端通讯
{public partial class Form1 : Form{public Form1(){InitializeComponent();}TcpListener listener = null;TcpClient handler = null;NetworkStream stream = null;bool isrun = false;private void openServer_Click(object sender, EventArgs e){if (IP.Text.Trim().Length < 9 && Port.Text.Trim().Length == 0){MessageBox.Show("IP和端口无效");return;}listener = new TcpListener(IPAddress.Parse(IP.Text), int.Parse(Port.Text));listener.Start();isrun = true;}private void send_Click(object sender, EventArgs e){if (stream != null){byte[] buffer = Encoding.UTF8.GetBytes(log.Text);stream.Write(buffer, 0, buffer.Length);}}private void Form1_Load(object sender, EventArgs e){IP.Text = "127.0.0.1";Port.Text = "9800";try{Task.Run(() =>{while (true){if (isrun && listener != null){handler = listener.AcceptTcpClient();stream = handler.GetStream();byte[] buffer = new byte[1024];if (stream != null){stream.Read(buffer, 0, buffer.Length);this.BeginInvoke(new Action(() =>{log.Text = Encoding.UTF8.GetString(buffer);}));}}Thread.Sleep(50);}});}catch (Exception){}}private void Form1_FormClosing(object sender, FormClosingEventArgs e){isrun = false;if (listener != null){listener.Stop();}}}
}

设计器自动生成代码:

namespace TCP网络服务端通讯
{partial class Form1{/// <summary>///  Required designer variable./// </summary>private System.ComponentModel.IContainer components = null;/// <summary>///  Clean up any resources being used./// </summary>/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>protected override void Dispose(bool disposing){if (disposing && (components != null)){components.Dispose();}base.Dispose(disposing);}#region Windows Form Designer generated code/// <summary>///  Required method for Designer support - do not modify///  the contents of this method with the code editor./// </summary>private void InitializeComponent(){label1 = new Label();label2 = new Label();IP = new TextBox();Port = new TextBox();openServer = new Button();log = new RichTextBox();send = new Button();SuspendLayout();// // label1// label1.AutoSize = true;label1.Location = new Point(42, 52);label1.Name = "label1";label1.Size = new Size(22, 20);label1.TabIndex = 0;label1.Text = "IP";// // label2// label2.AutoSize = true;label2.Location = new Point(42, 102);label2.Name = "label2";label2.Size = new Size(39, 20);label2.TabIndex = 1;label2.Text = "端口";// // IP// IP.Location = new Point(111, 52);IP.Name = "IP";IP.Size = new Size(291, 27);IP.TabIndex = 2;// // Port// Port.Location = new Point(111, 102);Port.Name = "Port";Port.Size = new Size(291, 27);Port.TabIndex = 3;// // openServer// openServer.Location = new Point(42, 173);openServer.Name = "openServer";openServer.Size = new Size(360, 29);openServer.TabIndex = 4;openServer.Text = "打开服务器";openServer.UseVisualStyleBackColor = true;openServer.Click += openServer_Click;// // log// log.Location = new Point(42, 224);log.Name = "log";log.Size = new Size(360, 238);log.TabIndex = 5;log.Text = "";// // send// send.Location = new Point(42, 468);send.Name = "send";send.Size = new Size(360, 29);send.TabIndex = 6;send.Text = "发送";send.UseVisualStyleBackColor = true;send.Click += send_Click;// // Form1// AutoScaleDimensions = new SizeF(9F, 20F);AutoScaleMode = AutoScaleMode.Font;ClientSize = new Size(414, 516);Controls.Add(send);Controls.Add(log);Controls.Add(openServer);Controls.Add(Port);Controls.Add(IP);Controls.Add(label2);Controls.Add(label1);MaximizeBox = false;Name = "Form1";Text = "TCP服务端";FormClosing += Form1_FormClosing;Load += Form1_Load;ResumeLayout(false);PerformLayout();}#endregionprivate Label label1;private Label label2;private TextBox IP;private TextBox Port;private Button openServer;private RichTextBox log;private Button send;}
}

相关文章:

WinForm之TCP服务端

目录 一 原型 二 源码 一 原型 二 源码 using System.Net; using System.Net.Sockets; using System.Text;namespace TCP网络服务端通讯 {public partial class Form1 : Form{public Form1(){InitializeComponent();}TcpListener listener null;TcpClient handler null;Ne…...

【TB作品】MSP430 G2553 单片机 口袋板 日历 时钟 闹钟 万年历 电子时钟 秒表显示

文章目录 功能介绍操作方法部分流程图代码录制了一个演示视频可以下载观看 功能介绍 时间与日期显示&#xff1a; 实时显示当前时间&#xff08;小时、分钟、秒&#xff09;和日期&#xff08;年、月、日&#xff09;。 闹钟功能&#xff1a; 设置闹钟时间&#xff08;小时、分…...

推流工具OBS的下载使用

一、下载安装 OBS&#xff0c;windows版本官网下载地址 二、推流步骤 安装好之后&#xff0c;打开软件 1、右下角&#xff0c;打开设置 2、输入推流地址&#xff0c;一般为rtmp格式开头的推流地址 输入完成后&#xff0c;应用并确定关闭窗口 3、“来源”里面新建媒体源、新…...

【设计模式之外观模式 -- C++】

外观模式 – 统一接口&#xff0c;简化调用 外观模式&#xff08;Facade Pattern&#xff09;是一种常用的软件设计模式&#xff0c;它为子系统中的一组接口提供了一个统一的高层接口&#xff0c;使得子系统更易于使用。外观模式定义了一个高层接口&#xff0c;这个接口使得这…...

【课程总结】Day8(上):深度学习基本流程

前言 在上一篇课程《【课程总结】Day7&#xff1a;深度学习概述》中&#xff0c;我们了解到&#xff1a; 模型训练过程→本质上是固定w和b参数的过程&#xff1b;让模型更好→本质上就是让模型的损失值loss变小&#xff1b;让loss变小→本质上就是求loss函数的最小值&#xf…...

论文发表知网//新课程//简介//投稿指南

【新课程】杂志是国家新闻出版署批准&#xff0c;山西省新闻出版局主管&#xff0c;由山西三晋报刊传媒集团主办、北京师范大学科学传播与教育研究中心协办的教育类学术期刊。 【新课程】属于山西省一级、国家二级期刊&#xff0c;主要围绕教学改革和实践方面的问题进行探讨和研…...

全面解析AdaBoost:多分类、逻辑回归与混合分类器的实现

1. 使用 AdaBoost 完成多分类和逻辑回归问题 多分类 AdaBoost 原本是为二分类问题设计的&#xff0c;但可以扩展到多分类问题。常用的方法包括 One-vs-All (OVA), AdaBoost.MH (Multiclass, Multi-Label) 和 AdaBoost.MR (Multiclass Ranking)。下面对每种方法进行详细介绍。…...

UE5实战篇二(对话系统1):导语

实现一款商业游戏中使用的对话系统插件。 虚幻商店链接&#xff1a; https://www.unrealengine.com/marketplace/zh-CN/product/0b84eaa9343543f58138bc4956a2fa8f 1. 内容可配置 2. 多分支对话、旁白对话、对话序列动画、文字显示及各种特效 3. 可配置文字、音效、呈现位…...

无人机的发展

朋友们&#xff0c;你们知道吗&#xff1f;无人机的发展之路可谓是科技界的一股清流&#xff0c;风头正劲啊&#xff01;从最初简单的遥控飞机到现在各种智能功能的加持&#xff0c;无人机真是越来越神奇了&#xff01; 首先&#xff0c;无人机在航拍领域大放异彩&#xff01;无…...

MySQL和MariaDB的对比和选型

目录 1 基本介绍 2 功能对比 3 性能对比 4 兼容性 5 社区支持和发展 6 安全性 7 选择建议 8 结论 除去功能本身的对比&#xff0c;相应各位看官不一定能看出太大所以然&#xff0c;而且对于大部分同学来说&#xff0c;使用起来感觉应该差不多。 所以综合来说&#xff0…...

Android11 后台启动Activity

在 Android 10 (API 29) 及更高版本(包括 Android 11),系统对后台启动 Activity 施加了严格的限制。默认情况下,应用程序在后台无法启动 Activity,以提高用户体验并减少不必要的干扰。以下为解决方法。 From 7d554af386150edec1cd68f6eaf700538af4e373 Mon Sep 17 00:00:0…...

这4款国产软件,因为太良心好用,甚至被误认为是外国人开发的

说起国产软件&#xff0c;大家总是容易给它们打上“流氓、要钱、广告满天飞”的标签&#xff0c;其实&#xff0c;有些小众的软件超级好用&#xff0c;功能强大又不耍流氓&#xff0c;真心不该被一棍子打死。 1、sunlight studio Sunlight Studio是一个开源、免费、无广告的硬…...

【C++进阶学习】第一弹——继承(上)——探索代码复用的乐趣

前言&#xff1a; 在前面&#xff0c;我们已经将C的初阶部分全部讲完了&#xff0c;包括类与对象、STL、栈和队列等众多内容&#xff0c;今天我们就进入C进阶部分的学习&#xff0c;今天先来学习第一弹——继承 目录 一、什么是继承&#xff1f;为什么会有继承&#xff1f; 二…...

OpenCV单词轮廓检测

OpenCV单词轮廓检测 0. 前言1. 策略分析2. 检测字符轮廓3. 检测单词轮廓相关链接 0. 前言 在根据文档图像执行单词转录时&#xff0c;通常第一步是识别图像中单词的位置。我们可以使用两种不同的方法识别图像中的单词&#xff1a; 使用 CRAFT、EAST 等深度学习技术使用基于 O…...

主流后端开发语言对比

软件开发领域&#xff0c;语言本身在各自领域都有适用场景&#xff0c;有许多流行的编程语言可供选择&#xff0c;每种语言都有其独特的特点和适用场景。 Java、C、C、Go 、Python、C#、Ruby、PHP 等主流编程语言&#xff0c;从底层实现、效率、原理、国内外市场占有率、社区活…...

Linux排查问题常用命令

查看运行内存使用情况命令&#xff1a; free -g&#xff08;单位GB&#xff09;free -m&#xff08;单位MB&#xff09; 查看磁盘空间使用情况命令&#xff1a; df -h lsof命令&#xff1a; 诊断网络问题和分析系统资源利用情况非常有用 - lsof -n&#xff1a;查看已经删除的…...

【Python/Pytorch - 网络模型】-- 手把手搭建E3D LSTM网络

文章目录 文章目录 00 写在前面01 基于Pytorch版本的E3D LSTM代码02 论文下载 00 写在前面 测试代码&#xff0c;比较重要&#xff0c;它可以大概判断tensor维度在网络传播过程中&#xff0c;各个维度的变化情况&#xff0c;方便改成适合自己的数据集。 需要github上的数据集…...

C#面:Server.UrlEncode、HttpUtility.UrlDecode的区别

C#中的Server.UrlEncode和HttpUtility.UrlDecode都是用于处理URL编码和解码的方法&#xff0c;它们的区别如下&#xff1a; Server.UrlEncode&#xff1a; Server.UrlEncode是一个静态方法&#xff0c;属于System.Web命名空间。它用于将字符串进行URL编码&#xff0c;将特殊字…...

50.Python-web框架-Django中引入静态的bootstrap样式

目录 Bootstrap 官网 特性 下载 在线样例 Bootstrap 入门 Bootstrap v5 中文文档 v5.3 | Bootstrap 中文网 在django中使用bootstrap 新建static\bootstrap5目录&#xff0c;解压后的Bootstrap文件&#xff0c;拷贝项目里就好。 在template文件里引用css文…...

机器学习实验----支持向量机(SVM)实现二分类

目录 一、介绍 (1)解释算法 (2)数据集解释 二、算法实现和代码介绍 1.超平面 2.分类判别模型 3.点到超平面的距离 4.margin 间隔 5.拉格朗日乘数法KKT不等式 (1)介绍 (2)对偶问题 (3)惩罚参数 (4)求解 6.核函数解决非线性问题 7.SMO (1)更新w (2)更新b 三、代…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...