在NT4.0下,通过拨号网络连接SERVER,为什么ClientSocket 需要大约53秒才能Active ?(50分)

  • 主题发起人 主题发起人 ACE
  • 开始时间 开始时间
这需要知道拨号连接时两边的机器都做了一些什么
1. 拨号-->客户端
2. 握手连接-->服务器-->客户端
3. 身份验证-->服务器
4. 建立/刷新网络连接信息-->服务器-->客户端

最花时间的是"握手连接"和"建立/刷新网络连接信息". 其实在第三步完成后, 客户
端就可以使用网络了. 你可以试一下, 当拨号连接显示"正在连接..."的时候接受邮件. 如果邮件较小的话, 没等连接结束的时候, 你就能够收完邮件.
 
问题发生在拨号连接完成后,执行ClientSocket.Active 时

奇怪的是在WIN95下很快,在WINNT下却很慢?
 
确实这样,不仅是拨号连接.连局域网也一样!

我原先写一个通讯程序,我原想98下和NT下SOCKET应该一样,就
呼拉拉把程序写完了.连到NT上一试根本不可用!

教训啦!:-(
 
我也有同样问题,请各位见教
 
你们用的什么控件?我用的ICS的控件,在NT上没有问题的,
在局域网上,传小于64K的数据,基本感觉不到延迟.我的
Client/Server都在95/NT下试过,任意组合都没有问题.

也许你们应该换一个控件了.
 
Delphi4自带的TServerSocket&TClientSocket
 
to lhz:你用拨号吗?
 
我也是用Delphi4自带的TServerSocket&TClientSocket
 
to CJ:
我也用过拨号,没有这样的现象.
我的程序类似于一个代理,它在一台
机器上侦听,并把所有的CLIENT发来
的数据发送到指定的服务器,并对数
据作一个记录,目的是监测协议的执
行过程.所以同时有ClientSocket
和ServerSocket.在拨号上网的机器
上用,也没有问题.
 
NT下很多常用程序都用不了,更不用说你自己编的了。
 
哦,我看错了,我以为把拨号都算上,会长舞蹈。
这到奇怪,在NT下编译一下看看。
 
我的Client(Local Net)是Java Applet,在同一台NT4上速度还能忍受,但把Client
放在Win95/98上时速度急剧变慢
 
据我所知, 只要在NT服务器上设置只允许客户端访问本机, 不允许访问本级所在的网络,速度就会快很多。但我现在没有条件验证,
只能作为参考意见了
 
本人曾遇到过类似问题,是在(非拨号连接的NT的)局域网下的
workstation/95/98,当执行ClientSocket.active:=true 时
要等很长时间才能建立连接。但我在TCP/IP配置中禁用DNS,可
迅速完成连接。
对于“禁用DNS”哪位老兄能够解释?
 
liuge说的有道理。很可能是DNS的原因。
如果服务器只是用于局域网,建议禁用DNS。
如果使用DNS,在连接某台机器时,如果用
机器名,而不是用IP,则服务器先用设置的
DNS(也是台服务器)将机器名转化为IP,
DNS设置不正确的话,这个过程很慢的,
直到失败。
 
如果你使用的是hostname连接,同DNS的配置有问题,你可以试试
在Hosts文件中加入主机名和IP地址的对应关系,或者配置一下DNS
服务器,将局域网的IP地址加入DNS服务器的搜索列表。这样会快
一些(可以通过Ping hostname测试)

如果你使用IP地址,应使用RemoteID连接,而不是Hostname。否则,
会变慢的(在Java中如此,仅做参考)

Good Luck!
 
慢可能是因为IP赋值写的是SERVICE的值,而不是ADDRESS的值,而对于SERVICE的赋值,SOCKET控件调用gethostbyname函数,此函数查找DNS设置,返回特别慢,所以,赋值IP地址的话,直接赋值ADDRESS会很快.
 
接受答案了.
 
后退
顶部