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

C#使用Scoket实现服务器和客户端互发信息

20240616

By wdhuag


目录

前言:

参考:

一、服务器端: 

1、服务器端口绑定:

2、服务器关闭:

二、客户端:

1、客户端连接:

2、客户端断开:

三、通讯:

1、接收信息:

2、发送信息:

四、问题:

五、源码:


前言:

如题,工作中用到了,做个小程序验证一下功能。


参考:

C#使用Socket发送和接收TCP数据示例_c#tcp通信获取对方port-CSDN博客

C#实现Socket_TCP/IP(客户端,服务器端通信)_c# - 获取tcp服务器端口的所有客户端-CSDN博客

c#实现最简单的socket通信(一对一)_c# socket tcp client一对一server-CSDN博客

C#中通过Socket实现一个简单的TCP\IP服务器和客户端的搭建_tcp 服务端 客户端制作c#-CSDN博客

C#服务端与多客户端进行Tcp通信_c# tcp server-CSDN博客

C#中Socket关闭 Close、Dispose、Shutdown、Disconnect - jshchg - 博客园 (cnblogs.com)

Socket的基本操作函数socket()、bind()、listen()、connect()、accept()、recv()、send()、select()、close()_socket函数和bind-CSDN博客


一、服务端: 

1、服务端 端口绑定:

private Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);string ip = 服务器IP地址;
int port = 服务器端口;
EndPoint _endPoint = new IPEndPoint(IPAddress.Parse(ip), port);
serverSocket.Bind(_endPoint);    //绑定端口
serverSocket.Listen(100);    //最大连接数

2、服务端关闭:

serverSocket.Shutdown(SocketShutdown.Both);
serverSocket.Close();
serverSocket.Dispose();    //不释放资源无法重新连接


二、客户端:

1、客户端连接:

private Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);string ip = 服务器ip地址;
int port = 服务器端口;
clientSocket.Connect(new IPEndPoint(IPAddress.Parse(ip), port));

2、客户端断开:

clientSocket.Disconnect(false);


三、通讯:

1、客户端接收信息:

byte[] data = new byte[1024];
int length = clientSocket.Receive(data);
string message = Encoding.UTF8.GetString(data, 0, length);

 

 2、服务端接收信息:

clientSocket = serverSocket.Accept();byte[] data = new byte[1024];
int length = clientSocket.Receive(data);
string message = Encoding.UTF8.GetString(data, 0, length);

3、发送信息:

string cmd = 信息;
clientSocket.Send(Encoding.UTF8.GetBytes(cmd));


四、问题:

1、服务器强行关闭Socket,clientSocket = serverSocket.Accept();这一段会报错。。。如何完美停止?

2、服务端接收需要用多线程,不然只能接收最后连接客户端的信息。


五、源码:

链接: 度盘
提取码:ihdp 


END

相关文章:

C#使用Scoket实现服务器和客户端互发信息

20240616 By wdhuag 目录 前言: 参考: 一、服务器端: 1、服务器端口绑定: 2、服务器关闭: 二、客户端: 1、客户端连接: 2、客户端断开: 三、通讯: 1、接收信…...

【经验分享】SpringCloud + MyBatis Plus 配置 MySQL,TDengine 双数据源

概述 因为项目中采集工厂中的设备码点的数据量比较大,需要集成TDengine时序数据库,所以需要设置双数据源 操作步骤 导入依赖 <!-- 多数据源支持 --><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-s…...

Pycharm 忽略文件

安装 .ignore插件 规则示例 罗列一些常遇到.getignore忽略规则的使用示例&#xff1a; 1. 在已忽略文件夹中不忽略指定文件夹&#xff1a; /libs/* !/libs/extend/ 2. 在已忽略文件夹中不忽略指定文件 /libs/* !/libs/extend/fastjson.jar 3.只忽略libs目录&#xf…...

爬虫学习。。。。

爬虫的概念&#xff1a; 爬虫是一种自动化信息采集程序或脚本&#xff0c;用于从互联网上抓取信息。 它通过模拟浏览器请求站点的行为&#xff0c;获取资源后分析并提取有用数据&#xff0c;这些数据可以是HTML代码、JSON数据或二进制数据&#xff08;如图片、视频&#xff09…...

美国铁路客运巨头Amtrak泄漏旅客数据,数据销毁 硬盘销毁 文件销毁

旅客的Guest Rewards常旅客积分账户的个人信息被大量窃取。 美国国家客运铁路公司&#xff08;Amtrak&#xff09;近日披露了一起数据泄露事件&#xff0c;旅客的Guest Rewards常旅客积分账户的个人信息被大量窃取。 根据Amtrak向马萨诸塞州提交的泄露通知&#xff0c;5月15日…...

LabVIEW与Matlab联合编程的途径及比较

​ LabVIEW和Matlab联合编程可以通过多种途径实现&#xff0c;包括调用Matlab脚本节点、使用LabVIEW MathScript RT模块、利用ActiveX和COM接口&#xff0c;以及通过文件读写实现数据交换。每种方法都有其独特的优势和适用场景。本文将详细比较这些方法&#xff0c;帮助开发者…...

秋招突击——6/16——复习{(单调队列优化DP)——最大子序和,背包模型——宠物小精灵收服问题}——新作{二叉树的后序遍历}

文章目录 引言复习&#xff08;单调队列优化DP&#xff09;——最大子序和单调队列的基本实现思路——求可移动窗口中的最值总结 背包模型——宠物小精灵收服问题思路分析参考思路分析 新作二叉树的后续遍历加指针调换 总结 引言 复习 &#xff08;单调队列优化DP&#xff09…...

SAR动目标检测系列:【4】动目标二维速度估计

在三大类杂波抑制技术(ATI、DPCA和STAP)中&#xff0c;STAP技术利用杂波与动目标在二维空时谱的差异&#xff0c;以信噪比最优为准则&#xff0c;对地杂波抑制的同时有效保留动目标后向散射能量&#xff0c;有效提高运动目标的检测概率和动目标信号输出信杂比&#xff0c;提供理…...

JavaEE多线程(2)

文章目录 1..多线程的安全1.1出现多线程不安全的原因1.2解决多线程不安全的⽅法1.3三种典型死锁场景1.4如何避免死锁问题2.线程等待通知机制2.1等待通知的作用2.2等待通知的方法——wait2.3唤醒wait的方法——notify 1…多线程的安全 1.1出现多线程不安全的原因 线程在系统中…...

中新赛克两款数据安全产品成功获得“可信数安”评估测试证书

6月19日&#xff0c;2024数据智能大会在北京盛大召开。 会上&#xff0c;中国2024年上半年度“可信数安”评估测试证书正式颁发。中新赛克两款参评产品凭借过硬的技术水准和卓越的应用效果&#xff0c;成功获得专项测试证书。 2024年上半年度“可信数安”评估测试通过名单 中新…...

代码随想录——分割回文串(Leetcode 131)

题目链接 回溯 class Solution {List<List<String>> res new ArrayList<List<String>>();List<String> list new ArrayList<String>();public List<List<String>> partition(String s) {backtracking(s, 0);return res;}p…...

Rust 学习方法及学习路线汇总

Rust 学习方法及学习路线汇总 Rust 是一种系统编程语言&#xff0c;旨在提供安全性、并发性和高性能。它是由 Mozilla 公司开发的&#xff0c;于 2010 年首次发布。Rust 能够帮助开发者编写可靠和高效的软件&#xff0c;因此受到了广泛的关注和认可。 如果你有兴趣学习 Rust&…...

一名女DBA的感谢信,到底发生了什么?

昨日我们收到这样一通来电 “早上九点刚上班便收到业务投诉电话&#xff0c;系统卡顿&#xff0c;接口失败率大增&#xff0c;怀疑数据库问题。打开运维平台发现是国产库&#xff0c;生无可恋&#xff0c;第一次生产环境遇到国产库性能问题&#xff0c;没什么排查经验&#xf…...

群晖NAS本地部署并运行一个基于大语言模型Llama2的个人本地聊天机器人

前言 本文主要分享如何在群晖 NAS 本地部署并运行一个基于大语言模型 Llama 2 的个人本地聊天机器人并结合内网穿透工具发布到公网远程访问。本地部署对设备配置要求高一些,如果想要拥有比较好的体验,可以使用高配置的服务器设备. 目前大部分大语言模型的产品都是基于网络线上…...

HarmonyOS模拟器(phone-x86-api9)一直卡顿的解决方法

在DevEco Studio 3.1.1 Release版本中的Device Manager中创建本地的模拟器&#xff0c;创建phone-x86-api9模拟器成功&#xff0c;但是启动该新建的模拟器一直显示"HarmonyOS"logo图片&#xff0c;然后一直卡在这里&#xff0c;运行结果如下所示&#xff1a; 检查模…...

排序题目:有序数组的平方

文章目录 题目标题和出处难度题目描述要求示例数据范围进阶 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;有序数组的平方 出处&#xff1a;977. 有序数组的平方 难度 2 级 题目描述 要求 给定按非递减顺序排序的整…...

PPT可以转换成Word吗?归纳了三种转换方式

PPT可以转换成Word吗&#xff1f;在当今快节奏的工作和学习环境中&#xff0c;不同格式文件之间的转换变得日益重要。PPT作为演示文稿制作的首选工具&#xff0c;广泛应用于会议演讲、教育培训等多个场景&#xff0c;而Word则是文档编辑与编排的基石。为了便于进一步编辑、分享…...

分布式锁三种方案

基于数据库的分布式锁&#xff08;基于主键id和唯一索引&#xff09; 1基于主键实现分布式锁 2基于唯一索引实现分布式锁 其实原理一致&#xff0c;都是采用一个唯一的标识进行判断是否加锁。 原理&#xff1a;通过主键或者唯一索性两者都是唯一的特性&#xff0c;如果多个…...

【HarmonyOS NEXT】har 包的构建生成过程

Har模块文件结构 构建HAR 打包规则 开源HAR除了默认不需要打包的文件&#xff08;build、node_modules、oh_modules、.cxx、.previewer、.hvigor、.gitignore、.ohpmignore&#xff09;和.gitignore/.ohpmignore中配置的文件&#xff0c;cpp工程的CMakeLists.txt&#xff0c;…...

从0开发一个Chrome插件:项目实战——翻译插件(附带申请谷歌翻译、百度翻译教程)

前言 这是《从0开发一个Chrome插件》系列的第十八篇文章,本系列教你如何从0去开发一个Chrome插件,每篇文章都会好好打磨,写清楚我在开发过程遇到的问题,还有开发经验和技巧。 专栏: 从0开发一个Chrome插件:什么是Chrome插件?从0开发一个Chrome插件:开发Chrome插件的必…...

告别AT指令:在STM32上移植ESP8266 RTOS SDK,更稳定地接入米家智能插座

STM32与ESP8266 RTOS深度整合&#xff1a;构建高可靠米家智能插座开发框架 从AT指令到RTOS SDK的技术跃迁 在智能家居设备开发领域&#xff0c;ESP8266模块与STM32的组合堪称经典搭配。然而&#xff0c;大多数开发者仍停留在使用AT指令集进行基础通信的阶段&#xff0c;这种方案…...

LazyVim终极指南:如何快速打造你的Neovim梦幻开发环境

LazyVim终极指南&#xff1a;如何快速打造你的Neovim梦幻开发环境 【免费下载链接】LazyVim Neovim懒人配置。 项目地址: https://gitcode.com/GitHub_Trending/la/LazyVim 你是否曾经因为Neovim配置的复杂性而望而却步&#xff1f;是否尝试过各种配置方案却始终找不到那…...

终极指南:nanoGPT如何让每个人都能训练自己的AI语言模型?

终极指南&#xff1a;nanoGPT如何让每个人都能训练自己的AI语言模型&#xff1f; 【免费下载链接】nanoGPT The simplest, fastest repository for training/finetuning medium-sized GPTs. 项目地址: https://gitcode.com/GitHub_Trending/na/nanoGPT 想要训练自己的AI…...

避坑指南:SpringBoot整合Drools 7.20时热部署冲突的解决方案

SpringBoot与Drools 7.20热部署冲突深度排查指南 当SpringBoot的devtools热部署功能遇上Drools规则引擎&#xff0c;就像两个高效率的工人同时修改同一台机器——看似都能独立工作&#xff0c;组合时却可能引发难以察觉的运行时故障。本文将带您深入这个典型的技术冲突现场&…...

统信系统下如何管理Mysql?

背景 看到标题很多朋友会打趣的问我&#xff1a;“你不是一直用麒麟操作系统做讲解吗&#xff1f;”&#xff0c;其实DBCS和DESK的兼容性太强了&#xff0c;什么操作系统都行&#xff0c;Windows上最容易了&#xff0c;所以我一般不用Windows&#xff0c;下次我用Ubuntu给大家…...

Webots R2021a搭配Anaconda环境:从SSL报错到Python API调通的完整避坑指南

Webots R2021a与Anaconda环境深度整合&#xff1a;Python控制器开发全流程解析 当机器人仿真与Python开发环境相遇时&#xff0c;Webots和Anaconda的组合为研究者提供了强大工具链。然而&#xff0c;从环境配置到API调用的完整流程中&#xff0c;开发者常会遇到各种"坑点&…...

cv_unet_image-colorization模型压缩与量化:面向移动端的部署优化

cv_unet_image-colorization模型压缩与量化&#xff1a;面向移动端的部署优化 想把那个能把黑白照片变彩色的AI模型塞进手机里&#xff1f;这听起来挺酷&#xff0c;但实际操作起来&#xff0c;你会发现它又大又慢&#xff0c;手机根本跑不动。这就像你想把一台高性能游戏电脑…...

bilibili_live_stream_code:开源直播推流工具 解锁自定义直播新体验

bilibili_live_stream_code&#xff1a;开源直播推流工具 解锁自定义直播新体验 【免费下载链接】bilibili_live_stream_code 用于在准备直播时获取第三方推流码&#xff0c;以便可以绕开哔哩哔哩直播姬&#xff0c;直接在如OBS等软件中进行直播&#xff0c;软件同时提供定义直…...

ABAP - MEMORY ID 的跨程序数据共享实践

1. ABAP内存ID&#xff1a;跨程序数据共享的秘密武器 在SAP开发中&#xff0c;经常会遇到这样的场景&#xff1a;程序A需要某些数据&#xff0c;但获取这些数据的逻辑写在程序B里。传统做法可能是通过接口、数据库表或者文件来中转数据&#xff0c;但这些方法要么太麻烦&#x…...

UModel:虚幻引擎资源解析工具零基础入门到高级应用指南

UModel&#xff1a;虚幻引擎资源解析工具零基础入门到高级应用指南 【免费下载链接】UEViewer Viewer and exporter for Unreal Engine 1-4 assets (UE Viewer). 项目地址: https://gitcode.com/gh_mirrors/ue/UEViewer 虚幻引擎资源解析是游戏开发与逆向工程领域的关键…...