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

   

posted on 2012-11-19 23:37  紫雨心  阅读(300)  评论(0编辑  收藏  举报

导航