网络通讯支持库二

网络通讯支持库二 帮助手册20080827版 返回支持库手册 返回首页

本支持库实现了对原始套接字和ARP协议的支持。通过原始套接字，我们可以更加自如地控制多种协议，而且能够对网络底层的传输机制进行控制；ARP（地址解析协议），就是将网络层（IP层，也就是相当于ISO OSI 的第三层）地址解析为数据连接层（MAC层，也就是相当于ISO OSI的第二层）的MAC地址。

操作系统支持： Windows、Linux

其它数据类型：

原始套接字 | ARP协议 | IP报头 | TCP报头
ICMP报头 | 以太网头 | ARP头 | 协议类型常量
ARP常量 |  |  |

适用版本，网络通讯支持库二 （1.0#4版）


原始套接字

原始套接字 普通类型 操作系统支持：Windows、Linux 跳至：网络通讯支持库二

方法：

创建 | 关闭 | 构造IP报头 | 构造TCP报头
构造ICMP报头 | 接收 | 发送 | 取IP报头
取TCP报头 | 取ICMP报头 |  |

参见： 基本数据类型


创建 方法 操作系统支持：Windows、Linux 所属对象：原始套接字

将创建一个用于访问指定协议报文的原始套接字。成功返回真，失败返回假。

语法： 逻辑型 原始套接字．创建 （协议类型）

参数名 | 描 述
协议类型 | 必需的；整数型。用来指明所要处理的协议类型。

例程：

说明 ：

创建一个用于访问IP协议报文和ICMP报文的原始套接字。

参见:例程


关闭 方法 操作系统支持：Windows、Linux 所属对象：原始套接字

关闭原始套接字。成功返回真，失败返回假。

语法： 逻辑型 原始套接字．关闭 （）

例程：

说明 ：

关闭创建的原始套接字。

参见： 例程


构造IP报头 方法 操作系统支持：Windows、Linux 所属对象：原始套接字

自行填充IP报头数据。

语法： 无返回值 原始套接字．构造IP报头 （IP报头）

参数名 | 描 述
IP报头 | 必需的；IP报头。

例程：

说明 ：

根据IP协议的结构，填充IP报头数据。

参见： 例程


构造TCP报头 方法 操作系统支持：Windows、Linux 所属对象：原始套接字

自行填充TCP报头数据。

语法： 无返回值 原始套接字．构造TCP报头 （TCP报头）

参数名 | 描 述
TCP报头 | 必需的；TCP报头。

例程：

说明 ：

根据TCP协议的结构，填充TCP报头数据。

参见： 例程


构造ICMP报头 方法 操作系统支持：Windows、Linux 所属对象：原始套接字

自行填充ICMP报头数据。

语法： 无返回值 原始套接字．构造ICMP报头 （ICMP报头）

参数名 | 描 述
ICMP报头 | 必需的；ICMP报头。

例程：

说明 ：

根据ICMP协议的结构，填充ICMP报头数据。

参见： 例程


接收 方法 操作系统支持：Windows、Linux 所属对象：原始套接字

接收所有通过的数据包。出错返回空字节集，每次接受的最大长度为20480个字节。

语法： 字节集 原始套接字．接收 （［等待时间］）

参数名 | 描 述
等待时间 | 可选的；整数型。等待接收的时间范围。单位为毫秒。

例程：

说明 ：

接收通过网络传送来的数据包。可以从该数据包中分离出各种网络协议的报文。

参见： 例程


发送 方法 操作系统支持：Windows、Linux 所属对象：原始套接字

向指定的位置发送原始套接字数据报。

语法： 逻辑型 原始套接字．发送 （对方IP，［对方端口］，［等待时间］，［数据］）

参数名 | 描 述
对方IP | 必需的；文本型。接收方的IP信息。
对方端口 | 可选的；整数型。接收方的端口信息。
等待时间 | 可选的；整数型。等待发送的时间范围。单位为毫秒。
数据 | 可选的；通用型。准备发送的数据。

例程：

说明：

根据对方的IP地址和端口发送构造好的原始套接字数据报。

参见： 例程


取IP报头 方法 操作系统支持：Windows、Linux 所属对象：原始套接字

从指定的字节集中取得IP报头信息。

语法： 无返回值 原始套接字．取IP报头 （数据，IP报头）

参数名 | 描 述
数据 | 必需的；字节集。待取得报头信息的数据。
IP报头 | 必需的；IP报头。待取得的IP报头。

例程：

说明：

从接收到的数据报中提取IP报头。

参见： 例程


取TCP报头 方法 操作系统支持：Windows、Linux 所属对象：原始套接字

从指定的字节集中取得TCP报头信息。

语法： 无返回值 原始套接字．取TCP报头 （数据，TCP报头）

参数名 | 描 述
数据 | 必需的；字节集。待取得报头信息的数据。
TCP报头 | 必需的；TCP报头。待取得的TCP报头。

例程：

说明：

从接收到的数据报中提取TCP报头信息。

参见：例程


取ICMP报头 方法 操作系统支持：Windows、Linux 所属对象：原始套接字

从指定的字节集中取得ICMP报头信息。

语法： 无返回值 原始套接字．取ICMP报头 （数据，ICMP报头）

参数名 | 描 述
数据 | 必需的；字节集。待取得报头信息的数据。
ICMP报头 | 必需的；ICMP报头。待取得的ICMP报头。

例程：

说明：

从接收到的数据报中提取ICMP报头信息。

参见： 例程


ARP协议

ARP协议 普通类型 操作系统支持：Windows、Linux 跳至：网络通讯支持库二

为了正常使用ARP协议的命令，请先安装WinPcap 3.1驱动

方法：

打开网络适配器 | 配置网络适配器 | 关闭网络适配器 | 构造以太网头
构造ARP头 | 发送 | 接收 | 取IP报头
取以太网头 | 取ARP头 |  |

参见：基本数据类型


打开网络适配器 方法 操作系统支持：Windows、Linux 所属对象：ARP协议

打开指定的网络适配器。成功返回真；失败返回假。

语法： 逻辑型 ARP 协议．打开网络适配器 （［网卡序号］）

参数名 | 描 述
网卡序号 | 可选的；整数型。要打开的网卡序号。

例程：

说明：

如果网络适配器打开失败的话，查看是否安装了有关WinPcap_3.1的驱动文件。

参考：例程


配置网络适配器 方法 操作系统支持：Windows、Linux 所属对象：ARP协议

设置网络适配器的属性。成功返回真；失败返回假。

语法： 逻辑型 ARP 协议．配置网络适配器 （［网卡模式］，［缓冲区大小］，［等待时间］）

参数名 | 描 述
网卡模式 | 可选的；整数型。可以为以下常量值之一：1、直接模式； 2、混杂模式（此模式可以监听所有流过本地主机的数据报）。
缓冲区大小 | 可选的；整数型。设置网卡接收数据包的缓冲区大小。
等待时间 | 可选的；整数型。设置接收一个数据报后的等待时间。单位为毫秒。

例程：

说明：

在配置网络适配器时，要先打开网络适配器，否则配置网络适配器不能成功。

参考：例程


关闭网络适配器 方法 操作系统支持：Windows、Linux 所属对象：ARP协议

关闭打开的网络适配器。

语法： 无返回值 ARP 协议．关闭网络适配器 （）

例程：

说明：

关闭已打开的网络适配器，如没有打开的网络适配器，关闭网络适配器无效。

参考：例程


构造以太网头 方法 操作系统支持：Windows、Linux 所属对象：ARP协议

自行填充以太网头数据。

语法： 无返回值 ARP 协议．构造以太网头 （以太网头）

参数名 | 描 述
以太网头 | 必需的；以太网头。待取得的以太网头。

例程：

说明：

根据以太网协议，自行填充以太网头数据。

参考：例程


构造ARP头 方法 操作系统支持：Windows、Linux 所属对象：ARP协议

自行填充ARP头数据。

语法： 无返回值 ARP 协议．构造ARP头 （ARP头）

参数名 | 描 述
ARP头 | 必需的；ARP头。

例程：

说明：

根据ARP协议，自行填充ARP头数据。

参考：例程


发送 方法 操作系统支持：Windows、Linux 所属对象：ARP协议

发送指定的ARP包。成功返回真；失败返回假。

语法： 逻辑型 ARP 协议．发送 （［发送次数］）

参数名 | 描 述
发送次数 | 可选的；整数型。在发送一个ARP包时，重复发送的次数。

例程：

说明：

发送时，必须打开网络适配器，否则发送失败。

参考：例程


接收 方法 操作系统支持：Windows、Linux 所属对象：ARP协议

接收所有通过的数据包。出错返回空字节集。

语法： 字节集 ARP 协议．接收 （）

例程：

说明：

接收网络中传送过来的数据包。用以取得各种网络协议的报文。

参考：例程


取IP报头 方法 操作系统支持：Windows、Linux 所属对象：ARP协议

从指定的字节集中取得IP报头信息。

语法： 无返回值 ARP 协议．取IP报头 （数据，IP报头）

参数名 | 描 述
数据 | 必需的；字节集。待取得报头信息的数据。
IP报头 | 必需的；IP报头。待取得的IP报头。

例程：

说明：

从接收到的数据报中取得IP报头信息。

参考：例程


取以太网头 方法 操作系统支持：Windows、Linux 所属对象：ARP协议

从指定的字节集中取得以太网头信息。

语法： 无返回值 ARP 协议．取以太网头 （数据，以太网头）

参数名 | 描 述
数据 | 必需的；字节集。待取得报头信息的数据。
以太网头 | 必需的；以太网头。待取得的以太网头。

例程：

说明：

从接收到的数据报中取以太网头的信息。

参考：例程


取ARP头 方法 操作系统支持：Windows、Linux 所属对象：ARP协议

从指定的字节集中取得ARP头信息。

语法： 无返回值 ARP 协议．取ARP头 （数据，ARP头）

参数名 | 描 述
数据 | 必需的；字节集。待取得报头信息的数据。
ARP头 | 必需的；ARP头。待取得的ARP头。

例程：

说明：

从接收到的数据报中取得ARP头信息。

参考：例程


IP报头 普通类型 操作系统支持：Windows、Linux 跳至：网络通讯支持库二

成员 | 描 述
首部长度及版本号 | 字节型；4位首部长度 + 4位IP版本号。
服务类型 | 字节型；
总长度 | 短整数型；
标识 | 短整数型；初始值为 1 。
标志位 | 短整数型；
生存时间 | 字节型；初始值为 128 。
协议 | 字节型；初始值为 6 。
IP首部校验和 | 短整数型；
源IP地址 | 文本型；
目的IP地址 | 文本型；
选项和填充 | 整数型；

参见：基本数据类型


TCP报头 普通类型 操作系统支持：Windows、Linux 跳至：网络通讯支持库二

成员 | 描 述
源端口 | 短整数型；
目的端口 | 短整数型；
序列号 | 整数型；
确认号 | 整数型；
首部长度及保留字 | 字节型；
标志位 | 字节型；实现不同的标志位探测，2是SYN，1是FIN，16是ACK探测 等等。
窗口大小 | 短整数型；
校验和 | 短整数型；
紧急数据偏移量 | 短整数型；
选项和填充 | 整数型；

参见：基本数据类型


ICMP报头 普通类型 操作系统支持：Windows、Linux 跳至：网络通讯支持库二

成员 | 描 述
ICMP类型 | 字节型；初始值为 8 。0->回送应答 8->回送请求。
子类型码 | 字节型；保存与特定ICMP 报文类型相关的细节信息。
ICMP校验和 | 短整数型；
序号 | 短整数型；
标识符 | 短整数型；初始值为 1 。

参见：基本数据类型


以太网头 普通类型 操作系统支持：Windows、Linux 跳至：网络通讯支持库二

成员 | 描 述
以太网目的地址 | 文本型；当目的地址为ffffffffffff时的地址是广播地址，即所有的以太网接口都要接收广播数据帧。
以太网源地址 | 文本型；
帧类型 | 短整数型；初始值为 2054 。帧类型表示后面数据的类型，对于ARP请求和应答来说，该字段的值是0x0806。

参见：基本数据类型


ARP头 普通类型 操作系统支持：Windows、Linux 跳至：网络通讯支持库二

成员 | 描 述
硬件类型 | 短整数型；初始值为 1 。表示硬件地址类型，以太网地址的值为1。
协议类型 | 短整数型；初始值为 2048 。表示要映射的协议地址类型，它的值为0x0800表示IP地址。
硬件地址长度 | 字节型；初始值为 6 。以太网为6字节的硬件地址。
协议地址长度 | 字节型；初始值为 4 。IP协议为4字节。
操作类型 | 短整数型；初始值为 1 。1表示ARP请求，2表示ARP应答。
发送端以太网地址 | 文本型；
发送端IP地址 | 文本型；
目的以太网地址 | 文本型；
目的IP地址 | 文本型；

参见：基本数据类型


协议类型常量

协议类型常量 枚举常量集合类型 操作系统支持：Windows、Linux 跳至：网络通讯支持库二

本对象枚举了所有用于指定套接字时候的协议。

成员 | 描 述
IP协议 | 常量值为 0 。
ICMP协议 | 常量值为 1 。
IGMP协议 | 常量值为 2 。
GGP协议 | 常量值为 3 。
TCP协议 | 常量值为 6 。
PUP协议 | 常量值为 12 。
UDP协议 | 常量值为 17 。
IDP协议 | 常量值为 22 。
ND协议 | 常量值为 77 。
RAW协议 | 常量值为 255 。

参见： 基本数据类型


ARP常量

ARP常量 枚举常量集合类型 操作系统支持：Windows、Linux 跳至：网络通讯支持库二

本对象枚举了所有用于ARP操作的常量。

成员 | 描 述
IP协议 | 常量值为 2048 。
ARP协议 | 常量值为 2054 。
ARP请求 | 常量值为 1 。
ARP应答 | 常量值为 2 。
直接模式 | 常量值为 1 。
混杂模式 | 常量值为 2 。

参见： 基本数据类型


系统基本数据类型列表及其说明如下：

1. 字节型。可容纳 0 到 255 之间的数值。

2. 短整数型。可容纳 -32,768 到 32,767 之间的数值，尺寸为 2 个字节。

3. 整数型。可容纳 -2,147,483,648 到 2,147,483,647 之间的数值，尺寸为 4 个字节。

4. 长整数型。可容纳 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 之间的数值，尺寸为 8 个字节。

5. 小数型。可容纳 3.4E +/- 38 (7位小数) 之间的数值，尺寸为 4 个字节。

6. 双精度小数型。可容纳 1.7E +/- 308 (15位小数) 之间的数值，尺寸为 8 个字节。

7. 逻辑型。值只可能为“真”或“假”，尺寸为 2 个字节。“真”和“假”为系统预定义常量，其对应的英文常量名称为“true”和“false”。

8. 日期时间型。用作记录日期及时间，尺寸为 8 个字节。

9. 文本型。用作记录一段文本，文本由以字节 0 结束的一系列字符组成。

10.字节集。用作记录一段字节型数据。字节集与字节数组之间可以互相转换，在程序中允许使用字节数组的地方也可以使用字节集，或者相反。字节数组的使用方法，譬如用中括号对（“[]”）加索引数值引用字节成员，使用数组型数值数据进行赋值等等，都可以被字节集所使用。两者之间唯一的不同是字节集可以变长，因此可把字节集看作可变长的字节数组。

11.子程序指针。用作指向一个子程序，尺寸为 4 个字节。具有此数据类型的容器可以用来间接调用子程序。参见例程 sample.e 中的相应部分。

    在以上的基本数据类型中，字节型、短整数型、整数型、长整数型、小数型、双精度小数型被统称为“数值型”，它们之间可以任意转换。不过编程需要注意转换可能带来的精度丢失。譬如：将整数 257 转换为字节后的结果为 1 ，这是因为值 257 超出了字节型数据的最大上限 255 ，从而产生了溢出。

    另外，通用型数据类型仅在系统内部使用，它能够匹配所有的系统基本数据类型、库定义数据类型、自定义数据类型。