winsock的问题(100分)

  • 主题发起人 主题发起人 jacer
  • 开始时间 开始时间
J

jacer

Unregistered / Unconfirmed
GUEST, unregistred user!
需要检查一个IP是否提供了匿名ftp服务
我是这样做的,先向这个端口顺序发送:
open ...
user ...
pass ...
三个字串,然后用ClientSocket.Socket.ReceiveText检查其返回字串。
如果含有'230',则表示该IP提供这项服务。
这样做有个问题:
如果网络不太畅通,前几次去取的时候都只能得到空字串。
而且如果该IP不提供服务时,取的时候也都只能得到空字串。
如果不用延时的话,如何判断是登陆成功但返回信息未到达还是根本就没有这项服务?
说明:连接时由于使用了proxy,而代理服务器总是能够连接上的,因此不会产生onerror事件。
不知道各位大虾有更好的办法没有?
 
你可以试试直接使用winsock,我对控件老是不敢兴趣
 
可以通过判断登录上去后服务器返回的提示符是不是指定字符来判断是否使用代理,
如返回的提示符为“WinGate>”,从而可以判断它是打开了telnet服务的WinGate代理服务器。
 
干吗不用D的控件呢,就这么简单:

NMFTP1.Host := '192.168.0.19';
NMFTP1.Port := 21;
NMFTP1.UserID := 'anonymous';
NMFTP1.Password := 'zhaqiong@21cn.com';
try
NMFTP1.Connect;
except
end;
if NMFTP1.Connected then
begin
showmessage('连接成功,提供了');
end
else
begin
showmessage('连接失败,未提供提供');
end;

如果是D6,它的IdFTP更好些。
 
if in noblocking mode receivetext in onreceive event
if in blocking mode please use a thread,because receiv will block
 
sonie:
TClientSocket没有OnRecieve事件,使用onRead好像不太正常?

zhaqiong:
TBaseSocket、TIPSocket如何设置使用proxy?

谢谢。
 
算了,结了吧
 
后退
顶部