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

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

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

...全文
1221 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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) ???
我如何获得返回值?

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧