DOS下的SOCKET编程
这是我摘抄的别人的心得,呵呵。
为了实现DOS机与PC机之间的TCP/IP通信,必须找到相关控制SOCKET的库。
本来有个国外网站www.wattcp.com免费提供WATTCP库了实现DOS中的TCP/IP协议栈,但是它却不提供说明文档,所以这块鸡肋先放哪吧。
话说那个写心得的又到一个叫ERTOS的库,是从WATCP库拓展来的(不仅实现了TCP/IP协议栈,还实现了DOS 下的多线程)。后来经过千辛万苦就得到了此层库及头文件。
然后用 windows98 + BC4.5 for DOS 编写了 在DOS622下运行的网络程序。
完成了程序后,还需要第二步;
第二步:安装网卡驱动
以上使用的库以DOS Ethernet Packet Driver作为底层驱动。Packet Driver是一个硬件相关的设备驱动程序,不同网卡的Packet Driver是不同的,一般可在网卡安装盘DOS目录或PCPKT目录下找到,也可到www.simtel.net下载。找出目录下的.com文件,可能有 好几个,可以逐个试。以他的任务为例,他使用过NE2000兼容网卡和D-LINK网卡,都在它们的驱动包里找到了Packet Driver.放入DOS中手工运行.com文件:NE2000 0X62或者DLKFET 0X62(62 和60都是网卡的中断号,二者皆可)。成功后出现网卡信息,显示正确的网卡mac地址,否则,提示错误信息或者显示网卡的广播地址。告诉你Packet Driver和网卡不匹配。安装成功后,系统即可运行TCP/IP程序,可将该命令加载到autoexec.bat文件中。Packet Driver 需要每次启动后都重新加载。
另外,建议在Config.sys中加入对扩展内存的支持,并将DOS驻留到高端。下面是一个完整的Config.sys文件的例子。
Config.sys
DEVICE=HIMEM.SYS
DOS=HIGH,UMB
FILES=40
代码编写:
准备工作都做完了,接下来即可编写代码了。
以下为客户端代码例子:
#include <stdio.h>
#include <string.h>
#include <rtos.h>
#include <net.h>
#include <mem.h>
#include <stdlib.h>
#include <ctype.h>
void main(void)
{
static tcp_Socket s;
char remotbuf[100] = "lanry";