中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 求助 关于dos网络编程(winsail)
« [1] [2] [3] »
作者:
标题: 求助 关于dos网络编程(winsail) 上一主题 | 下一主题
tianmian
初级用户





积分 100
发帖 41
注册 2007-12-6
状态 离线
『楼 主』:  求助 关于dos网络编程(winsail)

用的是bc3.1+winsail2.0;按照packet driver里面的说明文档把网卡驱动和相关的系统配置文件弄好了,在建立的工程中的config.sys也将网卡驱动开关加进去了。

但在调用socket()的时候总是返回1,查看得出错代号为2;

请问怎么解决?

2008-1-13 11:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tianmian
初级用户





积分 100
发帖 41
注册 2007-12-6
状态 离线
『第 2 楼』:  

我自己感觉很有可能是网卡驱动之类的没起来

2008-1-13 11:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 3 楼』:  要注册TCP/IP协议栈

如果要使用WinSail的TCP/IP协议栈,要有以下三个条件同时成立

(1)安装Packet网卡驱动程序,如果成功,会出现网卡的物理地址(即NIC地址)xx:xx:xx:xx:xx
(2)WinSail的配置文件Config.Sys中的NetCard段的NetCard键值配置为TRUE
    [NetCard]
    NetCard = TRUE
(3)在main函数中,调用InitSystem函数之前,须向WinSail V2.0注册TCP/IP协议栈
    ::AfxRegisterNetcardEntry(::GlobalInitSocket, ::GlobalCloseSocket, ::EthernetEntry);


---------------------------------------------------------------------------------------------------
您可以用WinSail的演示程序Sail3000查看网络是否已经可靠运行,首先将Sail3000工程文件中的Config.Sys文件“NetCard”段的“NetCard”键值置为“TRUE”,运行Sail2000.exe文件,在桌面上有一图标“网络设置”,如果NIC地址不是“00:00:00:00:00”,那么您的Packet网卡驱动程序就已经加载成功了。
您程序的IP地址是由“Netcard”段的“My_IP”键值指定,在演示程序中,我将它配置成了169.254.82.133了。

[ Last edited by firstsail on 2008-1-14 at 02:52 PM ]

2008-1-14 14:22
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
tianmian
初级用户





积分 100
发帖 41
注册 2007-12-6
状态 离线
『第 4 楼』:  

网卡驱动已经起来了,我进行了一些socket编程,用的是udp通信协议,创建socket-绑定-发送数据;然而发送数据的时候老返回错误?
请问firstsail能给一段用winsail编程的例子程序吗

2008-1-15 19:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 5 楼』:  

(1)下载“http://www.firstsail.com.cn/software.html”的WinSail V2.0
(2)解压后,运行“WinToDos”目录中的“Udp_Demo.exe”,作为UDP协议的上位机,正确填写准备与之通讯的下位机IP地址及其端口号,程序中默认下位机的IP地址是“169.254.82.133”和端口号是“6200”,最后“点击启动UDP协议按钮”启动UDP

(3)解压后将Sail3000目录拷到纯DOS环境中。
(4)进入纯DOS环境运行WinSail V2.0的演示程序Sail2000.exe,进入桌面上的图标“QQ聊天窒”,别忘了将Sail3000中的Config.Sys文件的“Netcard”段的“Netcard”键值配置为“True”.
您可以发送一些文字,看一看上位机Udp_Demo是否收到内容。

(5)下位机的UDP协议应用例子,可看Sail3000目录中的Remote_N.Cpp文件和qq.cpp两个文件

Remote_N.cpp文件实现“文件传输”、“下位机界面上传”、“鼠标键盘按钮接收”等功能。
qq.cpp文件实现“QQ聊天窒”的聊天程序

在调试WinSail的“TCP/IP”协议时,请在纯DOS环境下进行!

[ Last edited by firstsail on 2008-1-15 at 08:58 PM ]

2008-1-15 20:51
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 6 楼』:  请重新下载WinSail

不好意思,请重新到"http://www.firstsail.com.cn/software.html"下载更新后的“Sail3000”目录和“UdpDemo.Exe”程序

2008-1-15 21:15
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
tianmian
初级用户





积分 100
发帖 41
注册 2007-12-6
状态 离线
『第 7 楼』:  

非常感谢你的指导,我现在去试试看

2008-1-15 21:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 8 楼』:  

如果还有故障,可能:
(1)您的“路由器”或“集线器”过滤了您的IP包。建议直接采用“机联机”形式调试,注意“机联机”的网络线与连接“集线器”或“路由器”的网络线是不同的。

(2)或者将下位机的IP地址改为与上位机一样的“网络”地址。

[ Last edited by firstsail on 2008-1-15 at 09:33 PM ]

2008-1-15 21:31
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
tianmian
初级用户





积分 100
发帖 41
注册 2007-12-6
状态 离线
『第 9 楼』:  

按照你说的做了提示“程序没有加载winsail tcp/udp协议栈”

2008-1-15 23:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tianmian
初级用户





积分 100
发帖 41
注册 2007-12-6
状态 离线
『第 10 楼』:  

这个应该是在winsail系统起来之前已经注册好的,程序为什么这样提示呢

我qq是70344130,不如加我为好友吧,我向你多多学习

2008-1-15 23:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 11 楼』:  

那是您的“Packet驱动程序”没有加载成功。

请提供以下几个信息上来
(1)网卡的型号
(2)C盘根目录下Config.Sys内容
(3)C盘根目录下AutoExec.bat内容
(4)是直接使用Packet驱动程序,还是NDIS2程序转Packet驱动程序。
   


1:如果是直接使用Packet驱动程序,此时的驱动程序是“Com”后缀文件或“Exe”后缀文件。注意加软中断向量参数0x60,如
LH  Rtspkt.com  0x60

2:如果是使用NDIS2驱动程序转Packet驱动程序,此时的驱动程序是“Dos”后缀文件。到“网站”下载“PacketDriver驱动程序”,解压后参考“说明.txt”文件

[ Last edited by firstsail on 2008-1-16 at 01:36 PM ]

2008-1-16 13:27
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
tianmian
初级用户





积分 100
发帖 41
注册 2007-12-6
状态 离线
『第 12 楼』:  

但是我看过了 NIC 确实不为“00:00:00:00:00”,网卡驱动是按你提供的网站上的说明加载的
config.sys 如下:device=c:\windows\himem.sys/testmem:off
device=c:\windows\emm386.exe noems novcpi
devicehigh=c:\intel\protman.dos /i:c:\intel\RTL81xx
devicehigh=c:\intel\dis_pkt.dos
devicehigh=c:\intel\RTL81xx\Rtsnd.dos
dos=high,umb
stacks=12,256
files=30
注:intel是我网卡驱动所在的文件夹

autoexec.bat :
path c:\windows;c:\windows\command
lh smartdrv
c:\intel\netbind.com

还有一个现象,我想在程序中(winsail启动之后)用printf,或者CHPrintf打印一些中间标志信息,但我发现在程序运行的时候这些根本没输出,但看程序执行流程,这些语句是肯定被执行过的

2008-1-16 16:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tianmian
初级用户





积分 100
发帖 41
注册 2007-12-6
状态 离线
『第 13 楼』:  

对了,在autoexec.bat中系统好像自动在c:\intel\netbind.com加上了
rem - By Windows 98 Network - c:\intel\netbind.com

2008-1-16 16:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 14 楼』:  

有没有加载成功“Packet Driver”最简单的方法就是用debug程序查看60H中断向量的内容有没有"PKT DRVR"的字符串


(1)第一步,在DOS命令行下执行“Debug”
(2)第二步,键入“d180”后回车,
(3)第三步,注意D180指示的连续四个字节jj kk mm nn,如果是00 00 00 00,则没有加载成功,否则第四步

(4)第四步,键入d nnmm:kkjj回车(注:nn mm kk jj是第三步时的结果)
(5)第五步,查看在屏幕右边有没有"PKT DRVR"的字符串,如果有则加载成功了,否则没有加载成功

[ Last edited by firstsail on 2008-1-16 at 07:16 PM ]

2008-1-16 18:12
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 15 楼』:  



  Quote:
Originally posted by tianmian at 2008-1-16 16:52:
对了,在autoexec.bat中系统好像自动在c:\intel\netbind.com加上了
rem - By Windows 98 Network - c:\intel\netbind.com

(1)改回“c:\intel\netbind.com”

(2)Win98启动时迅速按住“F8”功能键,会弹出“Win98”菜单,共有6个菜单项,选择第“5”项进入“纯DOS”,即DOS7.0,或者将C盘根目录下的MsDos.Sys文件的“BootMenu”设置为“1”后重启动Win98,等到自动弹出菜单后执行第“5”项进入DOS7.0。修改msdos.sys文件前要先去掉文件的“只读”属性


[Options]
BootMulti=0
BootMenu=1
BootWin=0
BootGui=0



(3)请将Protocol.ini文件贴进来看一下

[ Last edited by firstsail on 2008-1-16 at 07:03 PM ]

2008-1-16 18:16
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: