C#网络编程(System.Net.Sockets命名空间)
目录
一、Socket类
1.示例源码
2.生成效果
二、TcpClient类和TcpListener类
1.示例源码
2.生成效果
三、UdpClient类
1.示例源码
2.生成效果
System.Net.Sockets命名空间主要提供制作Sockets网络应用程序的相关类,其中Socket类、TcpClient类、TcpListener类和UdpClient类较为常用。
一、Socket类
Socket类为网络通信提供了一套丰富的方法和属性,它主要用于管理连接,实现Berkeley通信端套接字接口。同时,它还定义了绑定、连接网络端点及传输数据所需的各种方法,提供处理端点连接传输等细节所需要的功能。WebRequest、TcpClient和UdpClient等类在内部使用该类。
如果当前使用的是面向连接的协议(如TCP),则服务器可以使用Listen()方法侦听连接;如果当前使用的是无连接协议(如UDP),则根本不需要侦听连接。调用ReceiveFrom()方法可接受任何传入的数据报。使用SendTo()方法可将数据报发送到远程主机。
Socket类的常用属性及说明如表:
| 属 性 | 说 明 |
| AddressFamily | 获取Socket的地址族 |
| Available | 获取已经从网络接收且可供读取的数据量 |
| Connected | 获取一个值,该值指示Socket是在上次Send还是Receive操作时连接到远程主机 |
| Handle | 获取Socket的操作系统句柄 |
| LocalEndPoin | 获取本地终结点 |
| ProtocolType | 获取Socket的协议类型 |
| RemoteEndPoin | 获取远程终结点 |
| SendTimeou | 获取或设置一个值,该值指定之后同步Send调用将超时的时间长度 |
Socket类的常用方法及说明如表:
| 方 法 | 说 明 |
| Accep | 为新建连接创建新的Socket |
| BeginAccep | 开始一个异步操作来接受一个传入的连接尝试 |
| BeginConnect | 开始一个对远程主机连接的异步请求 |
| BeginDisconnect | 开始异步请求从远程终结点断开连接 |
| BeginReceive | 开始从连接的Socket中异步接收数据 |
| BeginSend | 将数据异步发送到连接的Socke |
| BeginSendFile | 将文件异步发送到连接的Socket对象 |
| BeginSendTo | 向特定远程主机异步发送数据 |
| Close | 关闭Socket连接并释放所有关联的资源 |
| Connect | 建立与远程主机的连接 |
| Disconnec | 关闭套接字连接并允许重用套接字 |
| EndAccept | 异步接受传入的连接尝试 |
| EndConnect | 结束挂起的异步连接请求 |
| EndDisconnect | 结束挂起的异步断开连接请求 |
| EndReceive | 结束挂起的异步读取 |
| EndSend | 结束挂起的异步发送 |
| EndSendFile | 结束文件的挂起异步发送 |
| EndSendTo | 结束挂起的、向指定位置进行的异步发送 |
| Listen | 将Socket置于侦听状态 |
| Receive | 接收来自绑定的Socket的数据 |
| Send | 将数据发送到连接的Socket |
| SendFile | 将文件和可选数据异步发送到连接的Socket |
| SendTo | 将数据发送到特定终结点 |
| Shutdown | 禁用某Socket上的发送和接收 |
1.示例源码
2.生成效果
二、TcpClient类和TcpListener类
TcpClient类用于在同步阻止模式下通过网络来连接、发送和接收流数据。为使TcpClient连接并交换数据,使用Tcp ProtocolType类创建的TcpListener实例或Socket实例必须侦听是否有传入的连接请求。可以使用下面两种方法之一连接到该侦听器。
☑ 创建一个TcpClient,并调用3个可用的Connect()方法之一。
☑ 使用远程主机的主机名和端口号创建TcpClient,此构造函数将自动尝试一个连接。
TcpListener类用于在阻止同步模式下侦听和接受传入的连接请求。可使用TcpClient类或Socket类来连接TcpListener,并且可以使用IPEndPoint、本地IP地址及端口号或者仅使用端口号来创建TcpListener实例对象。如果要在同步阻止模式下发送无连接数据报,请使用UdpClient类。
TcpClient类的常用属性、方法及说明如表:
| 属性及方法 | 说 明 |
| Available属性 | 获取已经从网络接收且可供读取的数据量 |
| Client属性 | 获取或设置基础Socket |
| Connected属性 | 获取一个值,该值指示TcpClient的基础Socket是否已连接到远程主机 |
| ReceiveBufferSize属性 | 获取或设置接收缓冲区的大小 |
| ReceiveTimeout属性 | 获取或设置在初始化一个读取操作以后TcpClient等待接收数据的时间量 |
| SendBufferSize属性 | 获取或设置发送缓冲区的大小 |
| SendTimeout属性 | 获取或设置TcpClient等待发送操作成功完成的时间量 |
| BeginConnect()方法 | 开始一个对远程主机连接的异步请求 |
| Close()方法 | 释放此TcpClient实例,而不关闭基础连接 |
| Connect()方法 | 使用指定的主机名和端口号将客户端连接到TCP主机 |
| EndConnect()方法 | 异步接收传入的连接尝试 |
| GetStream()方法 | 返回用于发送和接收数据的NetworkStream |
TcpListener类的常用属性、方法及说明如表:
| 属性及方法 | 说 明 |
| LocalEndpoint 属性 | 获取当前 TcpListener 的基础 EndPoint |
| Server 属性 | 获取基础网络 Socke |
| AcceptSocket/AcceptTepClient()方法 | 接受挂起的连接请求 |
| BeginAcceptSocket/BeginAcceptTcpClient() | 开始一个异步操作来接收一个传入的连接尝试 |
| EndAcceptSocket()方法 | 异步接收传入的连接尝试,并创建新的Socket 来处理远程主机通信 |
| EndAcceplTepClient()方法 | 异步接收传入的连接尝试,并创建新的TcpClient 来处理远程主机通信 |
| Start()方法 | 开始侦听传入的连接请求 |
| Stop()方法 | 关闭侦听器 |
Stop()方法关闭TcpListenerStop(侦听),但不会关闭任何已接受的连接。
1.示例源码
2.生成效果
三、UdpClient类
UdpClient类用于在阻止同步模式下发送和接收无连接UDP数据报。因为UDP是无连接传输协议,所以不需要在发送和接收数据前建立远程主机连接,但可以选择使用下面两种方法之一来建立默认远程主机。
☑ 使用远程主机名和端口号作为参数创建UdpClient类的实例。
☑ 创建UdpClient类的实例,然后调用Connect()方法。
如果已指定了默认远程主机,则不要使用主机名或IPEndPoint调用Send()方法,否则将引发异常。
UdpClient类的常用属性、方法及说明如表:
| 属性及方法 | 说 明 |
| Available 属性 | 获取从网络接收的可读取的数据量 |
| Client 属性 | 获取或设置基础网络 Socket |
| BeginReceive()方法 | 从远程主机异步接收数据报 |
| BeginSend()方法 | 将数据报异步发送到远程主机 |
| Close()方法 | 关闭 UDP 连接 |
| Connect()方法 | 建立默认远程主机 |
| EndReceive()方法 | 结束挂起的异步接收 |
| EndSend()方法 | 结束挂起的异步发送 |
| Receive()方法 | 返回已由远程主机发送的UDP数据报 |
| Send()方法 | 将 UDP数据报发送到远程主机 |
1.示例源码
2.生成效果
相关文章:
C#网络编程(System.Net.Sockets命名空间)
目录 一、Socket类 1.示例源码 2.生成效果 二、TcpClient类和TcpListener类 1.示例源码 2.生成效果 三、UdpClient类 1.示例源码 2.生成效果 System.Net.Sockets命名空间主要提供制作Sockets网络应用程序的相关类,其中Socket类、TcpClient类、TcpListener类…...
linux 系统重装 ssh 连接失败
一.错误描述 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED 二.解决方案 输入以下指令: ssh-keygen -R XXX(ip地址) 按照我的例子(ip:10.165.7.136),会返回以下信息: 重新尝试连…...
stream流操作List对象,指定属性,取差集、交集
差集 // 差集 (list1 - list2 list1 中不同数据)List<Person> reduce1 list1.stream().filter(a -> !list2.stream().map(b -> b.getAge() "&" b.getName()).collect(Collectors.toList()).contains(a.getAge() "&" a.getName()…...
计算机相关行业在大数据库时代下的潮流和趁势
还记得当初自己为什么选择计算机? 随着数据的爆炸性增长,数据科学和数据分析成为了热门的领域。这些专业涉及处理和分析大规模数据集的技术和方法,以从中提取有价值的信息和洞察。数据科学家和数据分析师在各个行业中的需求不断增加…...
Mac苹果视频剪辑:Final Cut Pro Mac
Final Cut Pro是一款由Apple公司开发的专业视频非线性编辑软件,是业界著名的视频剪辑软件之一。它最初发布于1999年,是Mac电脑上的一款独占软件。Final Cut Pro具有先进的剪辑工具、丰富的特效和颜色分级、音频处理等功能,使得用户可以轻松地…...
高德Map
使用 官网:JS API 结合Vue使用 npm i amap/amap-jsapi-loader --saveimport AMapLoader from amap/amap-jsapi-loader;marker的属性、事件、方法 https://lbs.amap.com/api/javascript-api-v2/documentation#marker 自定义marker 为创建的 Marker 指定自定义图…...
SSM新闻发布管理系统
SSM毕设分享 序号1:SSM新闻发布管理系统 1 项目简介 Hi,各位同学好,这里是郑师兄! 今天向大家分享一个毕业设计项目作品【SSM新闻发布管理系统】 师兄根据实现的难度和等级对项目进行评分(最低0分,满分5分) 难度系数…...
客户销售目标拆解:数据驱动的方法和策略
写在开头 在当今竞争激烈的商业环境中,企业需要更加精准地制定销售目标以实现业务增长。数据驱动的方法在这一过程中扮演着关键的角色,帮助企业深入了解客户特征、行为和需求。本篇博客将深入探讨销售目标拆解在企业管理中的重要性,并介绍如何利用数据驱动的方法和策略来制…...
“丝路电商”与泛欧在线公共采购平台Peppol
近期上海商务委员会公布《关于在上海市创建“丝路电商”合作先行区的方案》(以下简称方案),方案中提出:“全面贯彻落实党的二十大精神,立足新发展阶段,完整、准确、全面贯彻新发展理念,加快构建…...
今日思考 -- 创新领导力(CIO)读后感
收获3个观点: 1 ,IT DT 商业,才是未来IT人的出路之一 ! 2 ,在CXO中,CIO像CEO一样,具备了整个企业的业务全视角 ,同时也更具解决 ‘’系统性‘’问题的能力 ! 3 &…...
Python实现Excel自动化
个人网站 文章首发于公众号:小肖学数据分析 Excel是办公自动化的关键工具之一,用于数据存储、处理和分析。 Python通过 openpyxl 库,提供了强大的Excel操作能力,让我们可以读取、写入、修改和创建复杂的Excel文件。 安装 open…...
WT2605-24SS高品质录音语音芯片:实现五种变音效果,为音频应用增添无限创意
在音频技术的世界里,录音芯片作为声音处理和传输的核心部件,一直以来都承载着人们对高品质音频的追求。而唯创知音推出的WT2605-24SS高品质录音语音芯片则在此基础上更进一步,带来了五种独特的变音效果,为音频应用注入了无限的创意…...
最美早安心语问候朋友们,祝你心情美好,万事如意
1、真诚的友谊,不会忘记,永远的朋友,每天想起。生活就是大海,朋友就是浪花,大海因有了浪花而美丽,生活有了朋友而甜蜜;祝福依旧,问候依然,祝朋友们开心快乐每一天……大家…...
2312skia,16画布
创建SkCanvas 首先,阅读SkCanvasAPI概述. Skia有多个接收SkCanvas绘图命令的后端.每个后端都有创建SkCanvas的独特方式.本页给出了每个示例: 光栅化 光栅化后端将绘画到可由Skia或客户管理的内存块. 推荐用管理画布命令要绘画内存对象的SkSurface为Raster和Ganesh后端创建画…...
mysql文本类型的最大长度限制
mysql支持很多类型,不同的文本有不同的长度限制。可以根据实际需要进行选择。 TINYBLOB, TINYTEXT L 1 bytes, where L < 2^8 (255 Bytes) BLOB, TEXT L 2 bytes, where L < 2^16 (64 Kilobytes) MEDIUMBLOB, MEDIUMTEXT L 3 b…...
ASP.NET《数据库原理及应用技术》课程指导平台的开发
1.1 系统设计目标 研制《数据库原理及应用技术》课程指导平台在功能上可以满足网络课堂教学活动的需要,在Internet上实现教学活动的各个环节。系统的基本设计原则有:先进性与方便性原则、功能实用性原则、开放性与可扩展性原则等。系统设计时采用较好的…...
OSHI-操作系统和硬件信息库
文章目录 引言一、快速入门1.1 OSHI的简介1.2 引入依赖1.3 涉及的包(package)1.4 涉及的核心类 二、操作系统信息:OperatingSystem2.1 总揽2.2 文件系统信息:FileSystem2.3 网络参数信息:NetworkParams2.4 进程信息&am…...
基于Java SSM框架+Vue实现企业公寓后勤管理系统项目【项目源码+论文说明】计算机毕业设计
基于java的SSM框架Vue实现企业宿舍后勤管理网站演示 摘要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所…...
stm32mp157和imx6ull在设备树节点上设置ap3216c的主要区别
stm32mp157和imx6ull在设备树节点上设置ap3216c的主要区别是,它们使用的不同的硬件架构和不同的设备树格式。以下是两者之间的差异: 硬件架构:stm32mp157是基于ARM Cortex-M4内核的微控制器,而imx6ull则是基于ARM Cortex-A7内核的…...
网工学习6-配置和管理 VLAN
6.1VLAN概念 1> 什么是 VLAN? VLAN 是一种在交换机上划分逻辑网段的二层技术。 2> 为什么要通过交换机划分网段? ① 因为交换机的端口密度比路由器高,并且价格比路由器低,所以组网成本更低。 ② 因为交换机划分网段比…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
企业大模型服务合规指南:深度解析备案与登记制度
伴随AI技术的爆炸式发展,尤其是大模型(LLM)在各行各业的深度应用和整合,企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者,还是积极拥抱AI转型的传统企业,在面向公众…...
