|
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 |
|