zoukankan      html  css  js  c++  java
  • C#网络编程

    IP地址与端口

      System.Net命名空间:

       IPAddress类:提供了对IP地址的转换、处理等功能;

        17个普通方法

       Dns类:该类提供了一系列静态的方法,用于获取提供本地或远程域名等功能;

        4个异步;

        8个普通方法;

        得到主机名: string HostName = Dns.GetHostName();

        得到主机IP: IPAddress[] IPList = Dns.GetHostAdderss(HostName);

       IPHostEntry类:该类的实例对象包含了Internet主机的相关信息,常用属性有两个:一个是AddressList属性,另一个是HostName属性;

       IPEndPoint类:在Internet中,TCP/IP使用一个网络地址和一个服务端口号来唯一标志标识设备和服务。网络地址标识网络上的设备;端口号标识该设备上的特定服务。网络地址和服务端口的组合称为端点。在C#中,使用IPEndPoint类表示这个端点,该类包含了应用程序连接到主机上的服务所需的IP地址和端口信息;

    套接字:(流套接字和数据报套接字)

      互联网进行通信,至少需要一对套接字,其中一个运行于客户端(ClientSocket),另一个运行于服务端(ServerSocket)。

      套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。

      使用套接字处理数据有两种基本模式:同步套接字和异步套接字。

      

      1. 同步套接字

        同步套接字的特点是在通过Socket进行连接、接收、发送操作时,客户机或服务器在接收到对方响应前会处于阻塞状态,即一直等到接收到对方请求时才继续执行下面的语句。可见,同步套接字适用于数据处理不太多的场合。当程序执行的任务很多时,长时间的等待可能会让用户无法忍受。

      2. 异步套接字

        在通过Socket进行连接、接收、发送操作时,客户机或服务器不会处于阻塞方式,而是利用callback机制进行连接、接收和发送处理,这样就可以在调用发送或接收的方法后直接返回,并继续执行下面的程序。可见,异步套接字特别适用于进行大量数据处理的场合。

    Socket类:

      System.Net.Sockets命名空间

                                  表1-1  IP套接字定义组合

    SocketType

    ProtocolType

    说明

    Dgram

    Udp

    无连接通信

    Stream

    Tcp

    面向连接的通信

    Raw

    Icmp

    Internet控制报文协议

    Raw

    Raw

    简单IP包通信

                            表1-3  套接字常用选项值

    SocketOptionLevel

    SocketOptionName

    说明

    IP

    AddMembership

    增加一个IP组成员

    IP

    HeaderIncluded

    指出发送到套接字的数据将包括IP头

    IP

    IPOptions

    指定IP选项插入到输出的数据包中

    IP

    MulticastInterface

    设置组播包使用的接口

    IP

    MultiLoopBack

    IP组播回送

    IP

    PacketInformation

    返回关于接收包的信息

    IP

    UnBlockSource

    设置套接字为无阻塞模式

    Socket

    AcceptConnection

    如果为真,表明套接字正在侦听

    Socket

    Broadcast

    如果为真,表明允许在套接字上发送广播消息

    Socket

    MaxConnections

    设置使用的最大队列长度

    Socket

    PacketInformation

    返回接收到的套接字信息

    Socket

    ReceiveBuffer

    接收套接字的缓存大小

    Socket

    ReceiveTimeout

    接收套接字的超时时间

    Socket

    SendBuffer

    发送套接字的缓存大小

    Socket

    SendTimeout

    发送套接字的超时时间

    Socket

    Type

    获取套接字的类型

    Socket

    UseLookback

    使用回传

    Tcp

    NoDelay

    为发送合并禁用 Nagle 算法

    Udp

    ChecksumConverage

    设置或获取 UDP 校验和覆盖

    Udp

    NoChecksum

    发送校验和设置为零的 UDP 数据报

    要通过互联网进行通信,至少需要一对套接字,其中一个运行于客户端,我们称之为ClientSocket,另一个运行于服务器端,我们称之为ServerSocket。

        根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。

    1、服务器监听是指服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。

    2、客户端请求是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后再向服务器端套接字提出连接请求。

     3、连接确认是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的信息发给客户端,一旦客户端确认了此信息,连接即可建立。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

    编程时必须要考虑消息边界问题

    解决TCP协议消息边界问题的方法有三种:

      

     C:\Windows\Microsoft.NET\Framework\v3.5\Csc.exe /noconfig /nowarn:1701,1702 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll" /reference:"C:\Program Files\Reference A

       

  • 相关阅读:
    JSDeferred 源码分析
    前端MVVM框架avalon揭秘
    前端MVVM框架avalon揭秘
    轻量级前端MVVM框架avalon源码分析-总结
    JavaScript 中介者模式与观察者模式有何不同?
    Knockout 新版应用开发教程之"text"绑定
    Knockout 新版应用开发教程之"visible"绑定
    Knockout 新版应用开发教程之Observable Arrays
    设计模式之美:Decorator(装饰)
    设计模式之美:Composite(组合)
  • 原文地址:https://www.cnblogs.com/gengyuanchao/p/2778221.html
Copyright © 2011-2022 走看看