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.生成效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/193997.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NAND Flash和NOR Flash的异同

NAND Flash和NOR Flash是两种常见的闪存类型。 NOR Flash是Intel于1988年首先开发出来的存储技术,改变了原先由EPROM和EEPROM一统天下的局面。 NAND Flash是东芝公司于1989年发布的存储结构,强调降低每比特的成本,更高的性能,并…

VSCode修改C++版本

新下载了一下VSCode,想使用C17的特性std::optional,但是显示有错误,想想可能是C 版本的问题,查了一下资料,按下面的博客操作,果然解决了。 vscode设置c 版本

Android跨进程通信,binder,native层,服务端在servicemanager注册服务

文章目录 Android跨进程通信,binder,native层,服务端在servicemanager注册服务1.服务端注册服务请求指令2.svcmgr_publish注册服务3.服务注册完毕通过服务端 Android跨进程通信,binder,native层,服务端在se…

展开说说:Android之广播接收者

1、是什么: BroadcastReceiver是Android四大组件之一的消息型组件;只有一个生命周期onReceiver但不可以进行耗时操作。可以代码动态注册也可清单文件静态注册; 2、啥原理: 广播分为广播发送者和广播接收者,发送者可…

栈和队列OJ题——15.循环队列

15.循环队列 622. 设计循环队列 - 力扣(LeetCode) * 解题思路: 通过一个定长数组实现循环队列 入队:首先要判断队列是否已满,再进行入队的操作,入队操作需要考虑索引循环的问题,当索引越界&…

网络接口规范

1、基本物理层: a) RJ45接口作为最基本的网络接口之一有两种形式:对于百兆网口有4条线,2对差分线;对于千兆网口有4对差分线。RJ45水晶头是有8个凹槽和8个触点(8p8c)的接头,分为集成网络变压器和非集成网络变…

使用进程池/线程池 加速 Python数据处理

使用进程池/线程池 加速 Python数据处理 目标简单模式多进程模式 参考 Python 是一种出色的编程语言,可用于处理数据和自动执行重复任务。尽管 Python 使编码变得有趣,但它并不总是运行速度最快的。默认情况下,Python 程序使用单个 CPU 作为单…

2022年9月8日 Go生态洞察:Go Developer Survey 2022 Q2 结果分析

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

物奇平台电容触摸功能调试

是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群赠送语音信号处理降噪算法,蓝牙耳机音频,DSP音频项目核心开发资料, 物奇平台电容触摸功能调试 1 修改按键驱动宏 2 编译生成wpk 文件,import 导入烧录文件。…

水果编曲软件fl studio手机版下载

fl studio mobile手机版中文名水果编曲软件,它是一款非常不错的音乐编曲软件,凭借简单易上手的操作方式,强悍且实用的功能,深受到了音乐创作者的喜爱,不仅仅提供了广阔的音乐创作空间,可以让用户对舞曲、轻…

工具网站:随机生成图片的网站

一个随机生成图片的网站:Lorem Picsum。 有时候,我们做静态页面需要大量图片去填充内容,以使用该网站去生成指定尺寸的图片。每次打开页面都会获取不同的图片,就不用我们做静态页面开发的时候,绞尽脑汁去找图片了。 …

原型设计模式

4. 原型设计模式 4.1 浅拷贝 在Java编程中,浅拷贝是指在复制对象时,只复制对象的基本数据类型的值和引用类型的地址,不复制引用类型指向的对象本身。浅拷贝可以用于一些简单的场景,例如对象的基本属性不包含其他对象的引用类型&…

振南技术干货集:ChatGPT,现在我做单片机/嵌入式开发已经离不开它了!(2)

注解目录 (此文部分内客由 ChatGPT 生成,你分得出来哪些是人写的,哪些是 ChatGPT 生成的吗?) 20.1 恐怖的 ChatGPT 2023年ChatGPT有多火?比 TikTok火4 倍都不止!什么是“范式革命”?从石器时代到飞机大炮就是范式革命。AI绘…

C语言速通笔记(1-40)

1.一个 C 语言程序有且只有一个 main 函数,是程序运行的起点。 2.每个 C 语言程序写完后,都是先编译. c 后链接. obj 最后运行.. exe 3.c和. obj 文件是无法运行的,只有…

Python读取栅格遥感影像并加以辐射校正后导出为Excel的一列数据

本文介绍基于Python语言中的gdal模块,读取一景.tif格式的栅格遥感影像文件,提取其中每一个像元的像素数值,对像素值加以计算(辐射定标)后,再以一列数据的形式将计算后的各像元像素数据保存在一个.csv格式文…

Redis基础知识

目录 一、为什么要用到Redis? 二、Redis 为什么运行比较快? 三、Redis的数据结构 四、Redis可以实现什么功能? 五、Redis 保证数据持久化方式 1、持久化方式主要有2种:RDB 和 AOF 2、RDB和AOF区别? 六、Redis 中的过期删…

IDA常用操作、快捷键总结以及使用技巧

先贴一张官方的图,然后我再总结一下,用的频率比较高的会做一些简单标注 快捷键 F系列【主要是调试状态的处理】 F2 添加/删除断点F4 运行到光标所在位置F5 反汇编F7 单步步入F8 单步跳过F9 持续运行直到输入/断点/结束 shift系列【主要是调出对应的页…

洛谷 P9389 烂柯杯 C++代码

目录 前言 思路点拨 AC代码 结尾 前言 今天我们来做洛谷上的一道题目。 网址:[THUPC 2023 决赛] 烂柯杯 - 洛谷 题目: 乱七八糟一堆文字,展示不下。 思路点拨 思路1:和围棋有关的人,很容易想到柯洁。 思路2&…

【RotorS仿真系列】Ardrone模型介绍

ardrone是rotors仿真框架提供的一款机型,因为该机型与我们实际使用的机型参数相近,所以这里对它的参数做特别整理和记录。 一、模型参数总结 ardrone的gazebo模型如下图所示: 根据ardrone.yaml,其关键参数如下所示&#xff1a…

Project 1: The Game of Hog(CS61A)

(第一阶段)问题 5a(3 分) 实现该函数,该函数模拟了完整的 Hog 游戏。球员 交替轮流掷骰子,直到其中一名玩家达到分数。playgoal 您现在可以忽略 Feral Hogs 规则和论点; 您将在问题 5b 中实现它。feral_h…