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

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.lryc.cn/news/251969.html

相关文章:

  • linux 系统重装 ssh 连接失败
  • stream流操作List对象,指定属性,取差集、交集
  • 计算机相关行业在大数据库时代下的潮流和趁势
  • Mac苹果视频剪辑:Final Cut Pro Mac
  • 高德Map
  • SSM新闻发布管理系统
  • 客户销售目标拆解:数据驱动的方法和策略
  • “丝路电商”与泛欧在线公共采购平台Peppol
  • 今日思考 -- 创新领导力(CIO)读后感
  • Python实现Excel自动化
  • WT2605-24SS高品质录音语音芯片:实现五种变音效果,为音频应用增添无限创意
  • 最美早安心语问候朋友们,祝你心情美好,万事如意
  • 2312skia,16画布
  • mysql文本类型的最大长度限制
  • ASP.NET《数据库原理及应用技术》课程指导平台的开发
  • OSHI-操作系统和硬件信息库
  • 基于Java SSM框架+Vue实现企业公寓后勤管理系统项目【项目源码+论文说明】计算机毕业设计
  • stm32mp157和imx6ull在设备树节点上设置ap3216c的主要区别
  • 网工学习6-配置和管理 VLAN
  • MySQL库与表的备份
  • Python核心编程之基础内功
  • GPT4-Turbo技术原理研发现状及未来应用潜力分析报告
  • 为什么 SQL 不适合图数据库
  • 【Rust日报】2023-12-02 深度学习框架 Burn 发布 v0.11.0
  • MySQL性能调优-1-实际优化案例
  • JavaScript空值合并运算符
  • Spring Boot 集成 spring security 01
  • C 编程中使用字符串
  • 【GD32307E-START】04 使用TinyMaix进行手写数字识别
  • qt-C++笔记之识别点击鼠标右键、点击位置以及Qt坐标系详解