获得TCP/IP支持
1:增加工作目录中的“Config.Sys”文件中的“NetCard”段
[NetCard]
NetCard = TRUE ;“真”表示需要网卡支持,“假”表示不需要网卡支持
HostName = OemComputer ;本机的主机名
My_IP = 169.254.210.218 ;本机的主机IP地址
PeerName = NT_Server ;服务器/上位机的主机名
You_IP = 169.254.210.218 ;服务器/上位机的主机IP地址
NetMask = 255.255.0.0
;子网掩码
GateWay = 169.254.1.1
;网关
3:在Main主函数中,向系统注册“TCP/IP”协议栈,须在调用“int
InitSystem(int argc, char** argv)”函数之前注册。
#include <Symbol.h>
#include <MyFrame.h>
int main (int argc, char**
argv)
{
//向WinSail V2.0注册TCP/IP协议
//Register Tcpip Protoent stack!
// GlobalInitSocket
-- Initlize Function For TCPIP!
// GlobalCloseSocket
-- Close Function For TCPIP!
// EthernetEntry --
Message Loop For TCPIP!
::AfxRegisterNetcardEntry(::GlobalInitSocket,
::GlobalCloseSocket, ::EthernetEntry);//注册WinSail-TCPIP栈
//Initlize Sysem
Kernel
if
(!::InitSystem(argc, argv))//初始化系统内核
{
::CloseSystem();//关闭系统内核
::printf("\nInit System Error!");
return(0);
}
//这里增加您的代码
//……
::CloseSystem();//关闭WinSail 内核
return (0);
}
4:TCP/IP协议网络包是基于“Packet Driver”驱动,并且固定使用了“60H”中断。对于网卡来说:“Packet Driver”驱动程序在附带的网卡光盘上可以找到。在演示程序Sail3000目录中,有一个目录Internet,里面就有许多厂家的Packet驱动。其中“RTSPKT.Com”就是“8139”网卡的驱动。
5:目前TCP/IP的UDP协议是非常成熟的,而TCP协议表现还不是非常满意,因为该TCP协议目前还没有支持“超时处理”,没有支持“滑动窗口”。如果需要长时间使用TCP协议,推荐使用第三方的TCP/IP协议栈(例如:Wattcp)。
WinSail内部的TCP/IP协议目前不支持IP包的分片,不支持TCP包的重装配,TCP只是“数据包”不是“数据流”,使用时须注意它的局限性。
WinSail V2.0主要用于“工业现场”,UDP协议基本能够满足实际现场需要,所以“协议栈”的局限性有待将来升级,或者向WinSail注册第三方的TCP/IP协议栈(如:Wattcp)。由于WinSail的TCP/IP协议栈的代码已经达到70K之多,有些庸肿,将来有可能去除TCP协议,只保留UDP协议!