奇怪的socket握手问题,请高手赐教,不甚感激(200分)

  • 主题发起人 主题发起人 整得黑
  • 开始时间 开始时间

整得黑

Unregistered / Unconfirmed
GUEST, unregistred user!
server端只放置一个socketserver控件,client端只放置一个socketclient控件。

假定三台机器 A 、 B 、C,操作系统都为98或者XP。

1.设置socketclient的host为 127.0.0.1
在机器 A 上,同时运行server和client能顺利connect
在机器 B 上,同时运行server和client能顺利connect
在机器 C 上,同时运行server和client无法建立连接,在本机上运行 ping 127.0.0.1能顺利返回。

2.设置socketclient的host为 server 的 IP 地址
机器 A 上运行 server,机器 B 上运行 client 能顺利connect
机器 A 上运行 server,机器 C 上运行 client 无法建立连接
机器 A 上运行 client,机器 B 上运行 server 能顺利connect
机器 A 上运行 client,机器 C 上运行 server 能顺利connect
机器 B 上运行 server,机器 C 上运行 client 无法建立连接

问题就出在机器C上。而出现该问题的用户只是很少的部分,但既然有问题,就需要去解决,在这里请各位高手赐教,不甚感激!
我的分不多,希望大家能尽力回答,疑难问题在于大家去研究和探讨。
 
会不会是C上的协议安装有问题?重新装一遍试试?
 
从这两个方面去检查:
1、网卡可能不行(重新换一个)
2、协议有问题(删除后重新安装)
3、网线部分的问题

 
to Corn1 和 renyi:
感谢你们的解答,但是你们所说的都检查过了,都不存在问题。出问题的 C 类机器,都能正常连接Internet,并能正常使用 IE 和 腾讯QQ。而且 C 类机器用 ping 命令都顺利返回。这里的 C 类机器并不是指一台电脑,而是多台,大概比例为 5%。

会不会是socket协议的问题呢?或者是系统一些dll文件造成的呢?该如何解决呢?还望高手指点。
 
可能是系统有问题,在C类机器上编译你的程序吧。试试看
 
我的程序在很少的电脑上也会出现类似的问题,重装操作系统后Ok!
See:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2127949
 
想不到你们也遇到这种问题,我前不久写的一个网络电话软件,有的朋友说在他的机器上无论做服务器或客户端都失败,让我晕得不行,因为在我周围使用都好好的!
 
C机器上是否是使用代理上网的?
 
都是独立上网,问题实在辣手,还没有高人来指点吗?

乡村月光,你的网络电话也存在这个问题?
 
这好像很正常,主要可能是那个端口被占用了!而且,收网络影响很大,我觉得Tcp连接也不是很稳定!我以前也对这个烦透了!不过只要大部分机子上能行,我就满足了,哈哈,我是自己开发出来玩玩的!
 
是啊,我已经收到两个这样的报告,不知道是怎么回事,还有就是在2000/XP下很多时候无法挂机,有时候偶尔又可以,但在98下一切正常。不知道哪位高手能帮忙看看是为什么?
 
to lincats :
我觉得有问题就应该去分析和解决,而不是抱着凑合的态度。
今天也许能凑合,但下次又出现该怎么办呢?
 
to 乡村月光:
你的网络电话我看了下,代码不全。能否提供完全呢?主要想看看如何实现声音采集的过程
 
代码是齐全的,声音采集部分其实很简单,完全用的API,网络部分用了synapse
 
你的程序所用的socket库是什么版本的,xp的某些socket函数在98下不可用,反之亦然。
检查一下,确定所用的socket函数在xp和98下都可用。(98的网络功能很弱)。


 
to 乡村月光:
缺少 blcksock.pas 的源代码部分
 
to netwatch :
其实C类机器包括各种操作系统,也就是说在相同的操作系统下大部分能正常使用

而C类机器最明显的就是都是个人用户,都是虚拟拨号ADSL等方式上网

但C类机器为server的时候,其他机器可以连接;反之则不行

那表示C类机器在运行client的时候,clientsocket无法正确绑定需要进行通信的网卡,因为本机出现两个网卡或者两个以上的网卡。

但为什么例如QQ等软件不会出现该问题?是否能指点?
 
到http://www.ararat.cz/synapse/去下载
 
不是很清楚你的程序所运行的网络环境,原因很可能出现在程序的设计上。

QQ是使用UDP协议进行发送和接收消息的。当你的机器安装了OICQ以后,实际上,你既是服务端(Server),又是客户端(Client)。当你登录OICQ时,你的OICQ作为Client连接到腾讯公司的主服务器上,当你“看谁在线时,你的OICQ又一次作为Client从QQ Server上读取在线网友名单。当你和你的OICQ伙伴进行聊天时,如果你和对方的连接比较稳定,你和他的聊天内容都是以UDP的形式,在计算机之间传送。如果你和对方的连接不是很稳定,QQ服务器将为你们的聊天内容进行中转。其他的即时通信软件原理与此大同小异。



 
其实,我做的这个类似监控的元件,测试中只是在传输中出现数据错乱!开始用upd搜索Client端,出现Upd包数据不正确倒也正常,可是进一步到Tcp连接,也老重发Tcp包,再把这些包合成文件就不对了!我用的是Delphi5的NMFast50.dcp,也许只能怪它做得不够好了!:(如果,连也连不上,试试用Udp连一连,看看那个该死的Upd包是否正确!
 
后退
顶部