扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:阿虎 来源:天极开发 2007年11月11日
关键字:
属性 | 说明 |
AddressFamily | 获取Socket的地址族。 |
Available | 获取已经从网络接收且可供读取的数据量。 |
Blocking | 获取或设置一个值,该值指示Socket是否处于阻塞模式。 |
Connected | 获取一个值,该值指示Socket是否已连接到远程资源。 |
Handle | 获取Socket的操作系统句柄。 |
LocalEndPoint | 获取本地终结点。 |
ProtocolType | 获取Socket的协议类型。 |
RemoteEndPoint | 获取远程终结点。 |
SocketType | 获取Socket的类型。 |
方法 | 说明 |
Accept | 创建新的Socket以处理传入的连接请求。 |
BeginAccept | 开始一个异步请求,以创建新的Socket来接受传入的连接请求。 |
BeginConnect | 开始对网络设备连接的异步请求。 |
BeginReceive | 开始从连接的Socket中异步接收数据。 |
BeginReceiveFrom | 开始从指定网络设备中异步接收数据。 |
BeginSend | 将数据异步发送到连接的 |
BeginSendTo | 向特定远程主机异步发送数据。 |
Bind | 使Socket与一个本地终结点相关联。 |
Close | 强制Socket连接关闭。 |
Connect | 建立到远程设备的连接。 |
EndAccept | 结束异步请求以创建新的Socket来接受传入的连接请求。 |
EndConnect | 结束挂起的异步连接请求。 |
EndReceive | 结束挂起的异步读取。 |
EndReceiveFrom | 结束挂起的、从特定终结点进行异步读取。 |
EndSend | 结束挂起的异步发送。 |
EndSendTo | 结束挂起的、向指定位置进行的异步发送。 |
GetSocketOption | 返回Socket选项的值。 |
IOControl | 为Socket设置低级别操作模式。 |
Listen | 将Socket置于侦听状态。 |
Poll | 确定Socket的状态。 |
Receive | 接收来自连接Socket的数据。 |
ReceiveFrom | 接收数据文报并存储源终结点。 |
Select | 确定一个或多个套接字的状态。 |
Send | 将数据发送到连接的 |
SendTo | 将数据发送到特定终结点。 |
SetSocketOption | 设置Socket选项。 |
Shutdown | 禁用某Socket上的发送和接收。 |
public class IcmpPacket { private Byte _type ; // 类型 private Byte _subCode ; // 代码 private UInt16 _checkSum ; // 校验和 private UInt16 _identifier ; // 识别符 private UInt16 _sequenceNumber ; // 序列号 private Byte [ ] _data ; //选项数据 public IcmpPacket ( Byte type , Byte subCode , UInt16 checkSum , UInt16 identifier , UInt16 sequenceNumber , int dataSize ) { _type = type ; _subCode = subCode ; _checkSum = checkSum ; _identifier = identifier ; _sequenceNumber = sequenceNumber ; _data=new Byte [ dataSize ] ; //在数据中,写入指定的数据大小 for ( int i = 0 ; i < dataSize ; i++ ) { //由于选项数据在此命令中并不重要,所以你可以改换任何你喜欢的字符 _data [ i ] = ( byte )'#' ; } } public UInt16 CheckSum { get { return _checkSum ; } set { _checkSum=value ; } } //初始化ICMP报文 public int CountByte ( Byte [ ] buffer ) { Byte [ ] b_type = new Byte [ 1 ] { _type } ; Byte [ ] b_code = new Byte [ 1 ] { _subCode } ; Byte [ ] b_cksum = BitConverter.GetBytes ( _checkSum ) ; Byte [ ] b_id = BitConverter.GetBytes ( _identifier ) ; Byte [ ] b_seq = BitConverter.GetBytes ( _sequenceNumber ) ; int i = 0 ; Array.Copy ( b_type , 0 , buffer , i , b_type.Length ) ; i+= b_type.Length ; Array.Copy ( b_code , 0 , buffer , i , b_code.Length ) ; i+= b_code.Length ; Array.Copy ( b_cksum , 0 , buffer ,i , b_cksum.Length ) ; i+= b_cksum.Length ; Array.Copy ( b_id , 0 , buffer , i , b_id.Length ) ; i+= b_id.Length ; Array.Copy ( b_seq , 0 , buffer , i , b_seq.Length ) ; i += b_seq.Length ; Array.Copy ( _data , 0 , buffer , i , _data.Length ) ; i += _data.Length ; return i ; } //将整个ICMP报文信息和数据转化为Byte数据包 public static UInt16 SumOfCheck ( UInt16 [ ] buffer ) { int cksum = 0 ; for ( int i = 0 ; i < buffer.Length ; i++ ) cksum += ( int ) buffer [ i ] ; cksum = ( cksum >> 16 ) + ( cksum & 0xffff ) ; cksum += ( cksum >> 16 ) ; return ( UInt16 ) ( ~cksum ) ; } } |
IcmpPacket packet = new IcmpPacket ( 0 , 0 , 0 , 45 , 0 , 4 ) ; |
Socket socket = new Socket ( AddressFamily.InterNetwork , SocketType.Raw , ProtocolType.Icmp ) ; |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者