获得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协议!