一个网络连接方面的问题,关于Socket.SendStream (50分)

  • 主题发起人 主题发起人 asiasmm
  • 开始时间 开始时间
A

asiasmm

Unregistered / Unconfirmed
GUEST, unregistred user!
1、为什么在进行和远端的服务器进行连接是经常会返回10060错误
即使用了下面的代码俩次进行连接也不能连上
try
Active := True;
except
on EsocketError do
begin
try //socket 错误
Active := True;
except
on EsocketError do;
end; //}
end;
而且经常出现,请问如何才能避免或解决这个问题。

或者用其他的控件,有没有好的办法。
 
不对,连接断开了,估计是接受方关闭了连接
 
to 张无忌
应该不是对方断开吧,如果在不连网的情况下也会返回相同的情况。
还有,在进行连接是,我注意到任务栏中的连网状态的小灯根本不闪,
如果说网速慢,更不可能了,我是宽带的。
 
你这种抓错误的方式是错的,错误应该是在TClientSocket的OnError里根据错误
事件的类型来检测连接失败的错误
 
问题是连接不上是偶尔的,从新连就有可能连上
虽然说10次就有那么1到2回出现,但实在够烦人的,有好的稳定的连接方法么
 
我说了,你用的异步模式,active以后,不一定立刻连的上,要在onconneced里才知道连接
上了,连接失败要在onerror里判断,怪不的D的程序员工资那么低呀!
 
张兄说的是,小弟自愧不如呀,所以才向各位请教呀
说归说,还是请解决我的问题

问题是是通过返回值进行判断的,的确连接失败。
我的意思是如何能用一种方法,哪怕是费时间只要对方服务器存在,就尝试连接上
不要总返回哪个错误,然后还得手动从来,我用上面的代码显然不好使。
 
真是的,我说的那么明白,你不要在active的时候try except了,
这个错误在onerror里连接成功在onconnected事件里,不要总是
那种面向过程的编程的思维方式来编程!
 
EsocketError 就是返回的错误呀,这些不重要了
重要的是如何才能一次就能连接上,有好的方法么,
 
a我说的很清楚了,哎!,
 
WSAETIMEDOUT 10060 Connection timed out
返回的是连接超时,不过增加超时数好象也无济于事
 
我要吐血~~~~~~~~~~~~~~~~~~~~~~~~~[:(!]真的很郁闷,,,
 
你好象还没有明白我的意思,咳
 
你用的是异步方式!!!
 
那是不是可以用同步方式,小弟刚刚才涉及用socket,还在学习中,请详细举例。
如果能解决,我。。。太感动了[^]
谢谢
 
用同步的话,那窗体就死锁,除非你对多线程很熟悉
而且组塞效率很低
 
对路,线程方面没的说,怎么用请讲
 
但是用异步方式很容易解决啊,你单独写个线程太麻烦了点,还不如用INDY算了
 
呵呵,这个你就不知道了,程序中实现这一不的就是采用的线程方式,而且是多线程
拜托了,分不够另加
 
或者介绍一种好的方法
 
后退
顶部