如何快速检测对方机算机的IP和某个端口是否打开

newc_k 2003-12-14 12:22:58
我用CLIENTSOCKET发送数据时遇到对方未打开我的服务端时,CONNECT速度奇慢,请教各位高手,如何快速检测对方机算机的IP和某个端口是否打开,这样未打开时客户端就不用连接。

TIdIcmpClient在PING时,只能PING对方的IP,不能获得对方端口是否打开的信息,请教解决方法。

...全文
1073 点赞 收藏 11
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ptzld 2003-12-14
帮你关注,收藏
回复
wcq8303 2003-12-14
telnet 命令实现
telnet IP地址 端口号
回复
newc_k 2003-12-14
up
回复
newc_k 2003-12-14
to:
我的问题是ClienSocket如果遇到未打开端口的连接速度很慢,造成程序像死机一样,这个如何解决,errorcode:=0这个我早就知道了。

我刚才试着用多线程写了一下,似乎是解决了
回复
wcq8303 2003-12-14
在ClientSocket控制的onerror事件,添加
errorcode:=0;
ShowMessage("服务器未开启!");
回复
newc_k 2003-12-14
楼上请指教如何做
回复
wcq8303 2003-12-14
晕!楼主真是有意思,你这样的实现方法和socket连接有什么区别吗?
我觉得你可以直接在onerror事件添加一个ShowMessage("服务器未开启!");
回复
newc_k 2003-12-14
我已解决该问题,贴出来与大家分享

uses
winsock

..........

procedure TForm1.Button1Click(Sender: TObject);
var
s:tsocket;
error:integer;
server:tsockaddrin;
begin

server.sin_addr.S_addr:=inet_addr('192.168.0.3');
s:=socket(AF_INET, SOCK_STREAM, 0);
server.sin_port:=htons(1024);
server.sin_family:=AF_INET;
error:=connect(s,server,sizeof(server));
if error=0 then
showmessage('a')//该端口已打开
else
showmessage('b');//未打开
closesocket(s);

end;
回复
npu125 2003-12-14
关注。。。
回复
newc_k 2003-12-14
高手在哪?
回复
newc_k 2003-12-14
Winexec(Pchar('telnet 192.168.0.3 1111'),SW_Hide) ???
我如何获得返回值?
回复
发动态
发帖子
网络通信/分布式开发
创建于2007-08-02

1565

社区成员

Delphi 网络通信/分布式开发
申请成为版主
社区公告
暂无公告