📄 dos internet
字号:
<HTML><HEAD><TITLE>DOS Internet Programming APIs</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="He Lingsong" name=Author>
<META content="MSHTML 6.00.2600.0" name=GENERATOR>
<META content=DOS,FTP,HTTP,email,smtp,web,www,server,tcp,wattcp,free
name=KeyWords></HEAD>
<BODY>
<CENTER><A name=100></A><B><FONT color=#cc0000><FONT size=+2>DOS Internet
编程接口</FONT></FONT></B></CENTER><B><FONT color=#ffffff>.</FONT></B> <BR>
<TABLE cols=1 width="100%" bgColor=#ccffff border=0>
<TBODY>
<TR>
<TD><B><FONT color=#000066><FONT
size=+1>目录</FONT></FONT></B></TD></TR></TBODY></TABLE>
<BLOCKQUOTE><B><FONT size=+1><A
href="#1"><FONT
color=#000099>一、 </FONT><FONT color=#000066>简介</FONT></A></FONT></B><br>
<BR>
<B><FONT color=#000066><FONT size=+1><A
href="#2">二、 网络模块内容</A></FONT></FONT></B><br>
<BR>
<B><FONT
color=#000066><FONT size=+1><A
href="#3">三、 网络编程库函数使用方法</A></FONT></FONT></B> <br>
<BR>
<B><FONT
size=+1><A href="#31"><FONT
color=#000066>四、 </FONT><FONT color=#000099>Socket变量类型</FONT></A></FONT></B><br>
<BR>
<B><FONT size=+1><A
href="#32"><FONT
color=#000066>五、 </FONT><FONT color=#000099>基本TCP/IP函数</FONT></A></FONT></B><br>
<BR>
<B><FONT size=+1><A
href="#33"><FONT
color=#000066>六、 UDP Socket</FONT><FONT
color=#000099>函数</FONT></A></FONT></B><br>
<BR>
<B><FONT size=+1><A
href="#34"><FONT
color=#000066>七、 </FONT><FONT color=#000099>TCP Socket函数</FONT></A></FONT></B><br>
<BR>
<B><FONT color=#000099><FONT size=+1><A
href="#4">八、 HTTP 服务器编程APIs</A></FONT></FONT><FONT color=#000066></FONT></B>
<br>
<BR>
<B><FONT color=#000099><FONT size=+1><A
href="#41">九、 FTP 服务器编程APIs</A></FONT></FONT></B><br>
<BR>
<B><FONT color=#000099><FONT size=+1><A
href="#5">十、 Internet客户机编程APIs</A></FONT></FONT></B><br>
<BR>
<B><FONT color=#000066><FONT size=+1><A
href="#6">十一、使用限制</A></FONT></FONT></B><br>
<BR>
<B><FONT color=#000066><FONT size=+1><A
href="#7">十二、模块下载</A></FONT></FONT></B><br>
<BR>
<B><FONT color=#000066><FONT size=+1><A
href="#7">十三、附录:DOS网卡驱动程序的安装</A></FONT></FONT></B> </BLOCKQUOTE>
<TABLE cols=1 width="100%" bgColor=#ccffff border=0>
<TBODY>
<TR>
<TD><B><FONT color=#000066><FONT size=+1>简介</FONT></FONT></B><A
name=1></A></TD></TR></TBODY></TABLE>
<BR> DOS是最早支持TCP/IP网络的操作系统之一,由于缺乏象Winsock
这样简单易用的网络编程APIs,DOS编程人员不得不从底层网络通信协议开始进行网络应用程序设计,难度大,进行了大量的重劳动。为了摆脱这种落后局面,笔者根据基于Web的网络化测控需要,在DOS网卡驱动程序Packet
Driver的基础上、参考WATTCP,改进设计了一个Winsock风格的DOS TCP/IP
Stack、同时采用Linux中的裁剪概念,设计了一组嵌入式Internet服务器/客户机编程APIs。设计者只需要用几条语句和20KB左右的内存就可以在应用程序中嵌入WWW服务器、FTP服务器等Internet功能。用户可通过运行在远端桌面计算机中的浏览器程序进行远程数据采集、I/O控制,或用FTP客户程序对嵌入式DOS计算机的软件进行更新。
<DIV align=right><FONT color=#ffffff><FONT size=+2>。</FONT></FONT><A href="#100">页首</A></DIV>
<TABLE cols=1 width="100%" bgColor=#ccffff border=0>
<TBODY>
<TR>
<TD><B><FONT color=#000066><FONT size=+1>网络模块内容</FONT></FONT></B><A
name=2></A></TD></TR></TBODY></TABLE>
<UL>tcplib.h -- Internet服务器编程APIs头文件 <BR>tcplibs.lib --
小模式网络编程APIs库文件(Borland C and Turbo C) <BR>tcplibl.lib --
大模式网络编程APIs库文件(Borland C and Turbo C) <BR>tcplibh.lib --
巨模式网络编程APIs库文件(Borland C and Turbo C)</UL>
<DIV align=right><FONT color=#ffffff><FONT size=+2>。</FONT></FONT><A href="#100">页首</A></DIV>
<TABLE cols=1 width="100%" bgColor=#ccffff border=0>
<TBODY>
<TR>
<TD><B><FONT color=#000066><FONT size=+1>网络编程库函数使用方法</FONT></FONT></B><A
name=3></A></TD></TR></TBODY></TABLE> <BR> 在 Borland C 或 Turbo C
的工程文件中加入tcplibx.lib,在调用网络编程库函数的C程序中加入tcplib.h头文件。
<DIV align=right><FONT color=#ffffff><FONT size=+2>。</FONT></FONT><A href="#100">页首</A></DIV>
<TABLE cols=1 width="100%" bgColor=#ccffff border=0>
<TBODY>
<TR>
<TD><B><FONT color=#000099><FONT size=+1>Socket变量类型</FONT></FONT></B><A
name=31></A></TD></TR></TBODY></TABLE><B>TCPSocket:</B>TCP Socket变量,用于存放TCP
Socket数据。
<P><B>UDPSocket:</B>UDP Socket变量,用于存放UDP Socket数据。
<P><B>IP:</B>IP地址变量,用于存放IP地址。
<DIV align=right><FONT color=#ffffff><FONT size=+2>。</FONT></FONT><A href="#100">页首</A></DIV>
<TABLE cols=1 width="100%" bgColor=#ccffff border=0>
<TBODY>
<TR>
<TD><B><FONT color=#000099><FONT size=+1>基本TCP/IP函数</FONT></FONT></B><A
name=32></A></TD></TR></TBODY></TABLE><FONT color=#ffffff><FONT
size=-1>.</FONT></FONT> <BR><B>void init_tcplib(void)</B>
<BR>初始化TCP/IP软件包,为TCP/IP
Stack分配内存(8KB),设定机器IP地址。IP地址由当前目录下的文本文件IP.TXT设定,其内容只有一行,就是机器的IP地址。下面是一个IP.TXT文件内容的例子:
<BR><FONT color=#ffffff>..</FONT>IP.TXT <BR><FONT color=#ffffff>..</FONT><FONT
color=#006600>202.114.6.48</FONT> <BR> <BR><B>void release_tcplib(void)</B>
<BR>释放TCP/IP Stack分配的内存空间,卸载Internet库函数。一般在程序退出前调用该函数。 <BR> <BR><B>void
settcpdebug(int d)</B> <BR>开启/关闭Debug信息输出。 <BR> d=0 开启 <BR> d=1 关闭 <BR>
<BR><B>int ping(char *host)</B> <BR>Ping 一台主机。 <BR>IP:主机IP地址。
<BR>返回值:-1=未发现该主机; >0 = 被Ping主机的应答时间. <BR> <BR><B>void gethostip(char
*ip)</B> <BR>获取本机IP地址。由字符串变量ip返回。 <BR> <BR><B>void sethostip(char *ip)</B>
<BR>设定主机IP地址。本软件包支持动态设定和改变主机IP地址,无须NT服务器DHCP的支持,注意不要用此方法强占其它计算机的IP地址,否则对网络管理员来说是一个灾难。若嵌入式PC的IP地址是固定的无须使用此函数,用IP.TXT设定好就可以了。
<P><B>void setcurrentpath(char *path)</B> <BR>设定程序当前工作路径。
<P><B>void dospath(char *path,char *path1)</B>
<BR>将Windows长路径path,转化为dos下的小于8个字符的短路径。由字符串变量path1返回。
<BR>如:c:\abcdefghijk,转化为:c:\abcdef~1
<P><B>void dosname(char *name,char *name1)</B>
<BR>将Windows长文件名name,转化为dos下的小于8个字符的短文件名。由字符串变量name1返回。
<BR>如:abcdefghijk.txt,转化为:abcdef~1.txt
<P><B>long int lenfile(char *filename)</B> <BR>返回指定文件的长度。
<BR><B>返回值:</B>指定文件的长度。
<DIV align=right><FONT color=#ffffff><FONT size=+2>。</FONT></FONT><A href="#100">页首</A></DIV>
<TABLE cols=1 width="100%" bgColor=#ccffff border=0>
<TBODY>
<TR>
<TD><B><FONT color=#000099><FONT size=+1>UDP Socket函数</FONT></FONT></B><A
name=33></A></TD></TR></TBODY></TABLE><B>UDPSocket new_udpsocket(void)</B>
<BR>创建一个UDPSocket变量,分配4KB的数据缓冲区。
<BR><B>返回值:若成功则</B>返回创建的UDPSocket变量句柄,若失败返回NULL。
<P><B>void release_udpsocket(UDPSocket hl)</B> <BR>删除一个UDPSocket变量,释放所拥有的数据缓冲区。
<P><B>int udp_kernal(UDPSocket hl)</B> <BR>处理PKT
Driver中断数据缓冲区中的UDP数据。应在程序中经常调用该函数,否则会使PKT Driver中断数据缓冲区中的数据因得不到处理而丢失。
<BR><B>返回值:0=错误。</B>
<P><B>int open_udp(UDPSocket Sock,char *host,int port)</B>
<BR>在客户端建立一个UDP连接,用于与服务器端进行通讯。 <BR>host:服务器IP地址 <BR>port:服务器UDP端口号
<BR>Sock:返回建立的<B>UDPSocket。UDP建立连接时并不进行实际的连接,只是设定相应的参数。</B>
<BR><B>返回值:1=成功,-1=失败。</B>
<P><B>int udp_send(UDPSocket Sock,char *buf,int len)</B> <BR>从客户端向服务器端发送UDP数据。
<BR>Sock:<B>用open_udp</B>与服务器端建立的UDPSocket
<BR>buf:发送的数据内容,对非char型的数据用强制数据类型转换为char型就可以了。 <BR>len:以Byte为单位的发送的数据长度。
<BR>返回值:<B>1=成功,-1=失败。</B>
<P><B>int udp_recv(UDPSocket Sock,char *buf,int mlen)</B>
<BR>接收通过UDPSocket发送来的UDP数据。
<BR>Sock:<B>用open_udp</B>与服务器端建立的UDPSocket,或用<B>listen_udp</B>建立的UDPSocket
<BR>buf:用于接收数据的内存缓冲区。 <BR>mlen:内存缓冲区的大小和可以接收的最大数据长度。 <BR>返回值:<B>实际接收的数据长度。</B>
<P><B>int udp_recv_time(UDPSocket Sock,char *buf,int len,int tout)</B>
<BR>接收通过UDPSocket发送来的UDP数据。
<BR>Sock:<B>用open_udp</B>与服务器端建立的UDPSocket,或用<B>listen_udp</B>建立的UDPSocket
<BR>buf:用于接收数据的内存缓冲区。 <BR>len:待接收的数据长度。 <BR>tout:以秒为单位的最大等待接收时间。
<BR>返回值:<B>实际接收的数据长度。</B>
<P><B>int listen_udp(UDPSocket Sock,int port)</B>
<BR>在服务器端对指定的UDP端口进行监听,等待客户端的连接。 <BR>port:监听的UDP端口号
<BR>Sock:返回建立的<B>UDPSocket。</B> <BR>返回值:0<B>=成功,-1=失败。</B>
<P><B>int udp_send_back(UDPSocket Sock,int port,char *buf,int len)</B>
<BR>从服务器端向客户端发送UDP数据包。
<BR>Sock:用<B>listen_udp</B>建立的UDPSocket,当客户连接和向服务器发送UDP数据包时,Sock中会自动填充客户端信息,用于服务器端返回数据。
<BR>buf:发送的数据内容,对非char型的数据用强制数据类型转换为char型就可以了。 <BR>len:以Byte为单位的发送的数据长度。
<BR>返回值:1<B>=成功,-1=失败。</B>
<P><B>int peer_udp_data(UDPSocket hl)</B>
<BR><B>查看UDPSocket数据缓冲区中是否有客户发送的数据。</B> <BR>返回值:<B>数据缓冲区中数据的长度。</B>
<P><B>int close_udp(UDPSocket Sock)</B> <BR>从客户端或服务器端关闭建立的UDPSocket连接。
<P><B><FONT color=#cc0000><A
href="udpdsample.htm">1.UDP服务器程序样例</A></FONT></B>
<BR><B><FONT color=#cc0000><A
href="udpcsample.htm">2.UDP客户端程序样例</A></FONT><FONT
color=#ffffff><FONT size=+2>.</FONT></FONT></B>
<DIV align=right><FONT color=#ffffff><FONT size=+2>。</FONT></FONT><A href="#100">页首</A></DIV>
<TABLE cols=1 width="100%" bgColor=#ccffff border=0>
<TBODY>
<TR>
<TD><B><FONT color=#000099><FONT size=+1>TCP Socket函数</FONT></FONT></B><A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -