在DOS下用PC/TCP创建两个TCP的sock连接到其他两个机器,出现死机是什么原因?

yangyng 2004-12-30 05:36:38
小生在DOS下用PC/TCP协议编写网络程序,连接两个WINDOWS 2000的服务器程序,采用TCP协议。
WINDOWS下采用CSOCK创建SOCK对象进行LISTEN,DOS下的程序是客户端,创建了两个SOCK对象,分别是SOCK1和SOCK2,客户端主动CONNECT,连接上之后开始send和recv,一切正常,收发都没有问题,也不丢帧。但是运行一段时间后(大约10个小时),DOS程序就死掉了。 好多次都是如此,死掉的时间时长时断,令我十分郁闷!

我在DOS下的开发环境时BC31,使用TD进行调试后,发现程序最后进入了一个死循环,具体的代码如下:
03DF:00D0 5B 07 26 8B 17 8B 46 06 07 59 5B 5D CA 04 00 8B
Unhandle exception 0D at 03DF:00D8,ERROR CODE 0DFC

汇编代码为
CS:0C94 cmp byte ptr[029e],00
CS:0c99 jg 0c94

然后就是死循环,CS的地址是03DF

我用的网卡是3COM ETHERNET III ISA!

我尝试过只创建一个SOCK,经测试正常运行了10多天没死机,但是两个SOCK不到一天就死机,如果用UDP协议也是从不死机,哪位大侠以前遇到过这种情况,帮忙解决一下? 要多少分有多少分!
...全文
103 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
netsys2 2004-12-31
  • 打赏
  • 举报
回复
网卡本身肯定是没有关系的,

因为网卡工作在链路层。

出现这些问题应该是网络层和应用层。

看看你网卡在DOS下的驱动。

yangyng 2004-12-31
  • 打赏
  • 举报
回复
我基本相信我的C代码没有任何问题,代码正确,无内存故障,主要是是不是DOS下的网卡不支持2个SOCK?
netsys2 2004-12-31
  • 打赏
  • 举报
回复
光看汇编代码是没有用的。

你应该检查一下你的C代码。

你可以把一些关键的数据、已完成代码的情况写入日志文件,来检查到底是什么错误。

现在用DOS的人很少了。
yangyng 2004-12-31
  • 打赏
  • 举报
回复
我用的3COM ETHERNET III ISA网卡,驱动加载如下:
SET PCTCP=c:\pctcp\pctcp.ini
lh c:\pctcp\lsl.com
lh c:\pctcp\3c5x9.com
lh c:\pctcp\odipkt.com 0x60
lh c:\pctcp\ethdrv.exe
主要是用UDP协议和单路连接的TCP都没有问题,两路TCP连接也是10个小时后才死一次,实在是难分析原因。
yangyng 2004-12-31
  • 打赏
  • 举报
回复
DOS下的驱动是3COM提供的标准驱动,应该没什么问题吧,在DOS下面只有这个驱动。我去3COM的网站上查了,没有发现有反应这方面的问题。

4,354

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧