socket编程---C#网络编程概念性介绍

C#网络编程实际就是对WinSock进行了进一步的包装。

  1. IPAddress,IPEndPoint, SocketAddress类

  IPAddress就是一个IP 地址类, IPEndPoint就是IPAddress+Port,对应的就是sockaddr_in这个struct. SocketAddress类可以存储IPEndPoint类序列化以后的信息。

  1.1 这两个类常用和注意的一些地方:¼

  1) IPAddress ip = IPAddress.Parse("192.168.123.1");

  2) IPAddress.Any is 0.0.0.0, 这个用在当系统中有多个网络接口,而用户不想把套接字绑定在任何接口上的时候。

  3) IPAddress.None is 255.255.255.255, 它经常用来创建一个伪套接字。

  4) 得到本机IP地址的一个方法: Dns.GetHostByName(Dns.GetHostName()).AddressList[0]

  2, C#中的套接字类System.net.Sockets.Socket

public Socket(   AddressFamily addressFamily,   SocketType socketType,   ProtocolType protocolType );

  在上面的构造函数中,SocketType与ProtocolType要自己对应。对应关系如下:

  Dgram(UDP) 无连接通信

  Stream (TCP) 面向连接的通信

  Raw   (ICMP) ICMP协议

  Raw   (Raw)  简单IP包

  Socket t = new Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp );

  2.1 套接字Socket类常用属性和函数

  Blocking 用来设置socket是否堵塞

  Connected 指示 Socket 是否已连接到远程主机. 即使 Connected 返回 true,也无法保证 Socket 仍处于 Connected 状态。true 值仅意味着在上次 I/O 操作时 Socket 处于连接状态.

  SetSocketOption()方法,将指定的 Socket 选项设置为指定值,看起来就是设置协议包头的一些值。(选项太多,看看MSDN,用google查查,可以找到很多例子)

  其他的方法,例如bind(),listen(),send(),receive()和WinSocket本质都一样。(略)

  2.2 Socket异常, SocketException

  2.3为了简化Socket操作,C#提供了3个套接字助手:

  TcpClient, TcpListener, UdpClient

posted @ 2013-05-10 12:07  Big.Eagle  阅读(281)  评论(0编辑  收藏  举报