socket编程学习笔记(二)

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

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值