共1条
1/1 1 跳转至页
DOS操作系统下TCP/IP应用程序的编写[原创]

在嵌入式设备开发过程中,为了节省成本,在很多嵌入式设备上使用了DOS操作系统。使用DOS操作系统,不仅可以节省 购买嵌入式操作系统的费用,而且在DOS下开发应用程序也比重新掌握一种嵌入时操作系统要来的快。但是DOS本身不是多任务的操作系统,在编写很多嵌入时设备应用软件时,会遇到一些问题。DOS下TCP/IP协议的实现就是一个比较常见的问题。
DOS下TCP/IP协议的实现可以有两种办法,一是采用有些公司开发的DOS下的TCP/IP协议栈,如:PCTCP。另外可以选用DOS下免费的TCP/IP协议代码,如:wattcp等。
PCTCP协议栈由于支持的协议类型比较全,运行稳定,函数接口简单,因此在DOS下使用的比较多。
在PCTCP使用使用过程中,首先要配置PCTCP.INI文件,主要是设置设备的IP地址,网络掩码、用户名、等参数。下面是一个IP
地址设置部分:
(在PCTCP.INI文件中)
[pctcp ifcust]
ip-address = 192.168.0.52
subnet-mask = 255.255.0.0
PCTCP.INI文件设置完毕后,就需要进行网卡驱动程序的安装。在PCTCP协议中,需要提供网卡的pktdrv驱动程序,驱动程序可以从网上下载。例如:Realtek 8139的pktdrv程序为rtspkt.com,下载完毕后,运行rtspkt.com安装驱动程序。驱动安装完毕后,还要运行PCTCP自己的核心驱动,在使用以太网时,需要调用ethdrv.com. ethdrv运行后,PCTCP核心部分就作为DOS的TSR驻留在内存中, 这时候就可以运行PCTCP的应用程序了.
PCTCP函数库提供了对多种常见TCP/IP协议的支持,包括:TCP、UDP、ICMP、TELNET、FTP、SNMP等。并且在函数借口上采用了和BSD兼容的函数,编程简单,方便移植。
下面给出一个TCP/IP的实现代码例子:
#include <4bsddefs.h>
#include
#include
#include
#include
#include
#include
#include
#include
#include
int base_port=5048;
int exit_flag=0;
main()
{
int socket1;
int socket2;
int socklength;
int peerlength;
struct sockaddr_in sock;
struct sockaddr_in peer;
if((socket1=socket(AF_INET,SOCK_STREAM,0))==-1)
{ printf("\r\nError TCP socket\r\n");
return(1);
}
sock.sin_family=AF_INET;
sock.sin_addr.s_addr=htonl(INADDR_ANY);
sock.sin_port=htons(base_port);
socklength=sizeof(sock);
peerlength=sizeof(peer);
if(bind(socket1,(struct sockaddr *)&sock,socklength)==-1)
{ printf("\r\nError TCP bind\r\n");
return(1);
}
if(listen(socket1,3)==-1)
{ printf("\r\nError TCP listen");
return(1);
}
if((socket2=accept(socket1,(struct sockaddr *)&peer,&peerlength))==-1)
{
printf("\r\nError TCP accept\r\n");
return(1);
}
printf("\r\n\r\nNow begining to receive data!!!\r\n");
close(socket2);
close(socket1);
return(0);
}
从以上代码可以看出,使用了PCTCP软件包后,在DOS下实现TCP/IP代码很简单。
我个人认为,如果需要在DOS下进行TCP/IP应用程序的开发,PCTCP开发包是一个不错的选择。PCTCP开发包支持Borland C,Microsoft C和 watcom c编译器。
关键词: 操作系统 应用程序 编写 原创 PCTCP #in
共1条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 | |
汽车电子中巡航控制系统的使用被打赏10分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏100分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 | |
分享电子控制安全气囊计算机知识点被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【OZONE】使用方法总结被打赏20分 |