VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 731|回复: 8

如何测试对方端口是否可用?

[复制链接]

1

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-3-3 17:00:02 | 显示全部楼层 |阅读模式
我有一组IP地址,现在想测试这些IP中的某个端口是否可用? (该IP也有可能不在线了)
回复

使用道具 举报

0

主题

22

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
发表于 2020-5-16 18:00:02 | 显示全部楼层
简单的用telnet ip  port,写一个批处理就可以了

要在VC中编程实现就用 tcp socket,connect端口,wsagetlasterror(),设置为非堵塞模式就可以了
回复

使用道具 举报

1

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-5-19 03:45:01 | 显示全部楼层
CAsyncSocket m_sock;
//...
m_sock.Create();
if( m_sock.Connect(mReader[i].m_strIP,9898) )
{  
  成功;
}
else{
    失败;
}

全部进入了 失败 中了,可是有些IP和端口确实是有用的,我用window media输入IP和端口都能播放(就是说该IP和端口可用)
回复

使用道具 举报

0

主题

22

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
发表于 2020-6-3 23:15:01 | 显示全部楼层
在你调试程序前,建议你telnet ip 9898看是否能连接,
观察以下情况
1。正常连接上,可以通过键盘发出数据
2。正常连接上,但立刻被remote主机中断
3。连接不上。说明端口确实不可用

仅仅判断返回值,是不足以确定的

m_sock.Create();
if( m_sock.Connect(mReader[i].m_strIP,9898) )
{  
  成功;
}
else{
  int errorcode=GetLastErro();
if (errorcode==WSAEWOULDBLOCK)
{
//当socket是非堵塞的,那么会有OnConnect消息被相应,在这个消息响应函数里你可以确定是否连接上,然后再断开,去连接下一个IP和端口,不要直接循环
}
else
{
//   失败;建议这里取得errorcode来判断具体的代码
}
}

回复

使用道具 举报

1

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-6-8 17:00:02 | 显示全部楼层
m_sock.Connect(mReader[i].m_strIP,9898)为假
可是该IP和端口确实是可用的啊,该IP在线.
该IP不运行任何socket程序
回复

使用道具 举报

0

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-6-10 20:45:01 | 显示全部楼层
因为你该IP没有绑定服务器,你的对端机器不是服务器。你本机只是客户端。肯定连不上
回复

使用道具 举报

0

主题

22

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
发表于 2020-6-13 12:00:01 | 显示全部楼层
remote ip 远端主机如果没有在这个IP和端口上进行监听,何来可用,所谓IP在线,只是你用ping发icmp包,与端口无关
回复

使用道具 举报

1

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-6-20 10:15:02 | 显示全部楼层
用程序怎么发icmp包?
回复

使用道具 举报

0

主题

22

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
发表于 2020-7-1 17:45:01 | 显示全部楼层
socket (AF_INET,SOCK_RAW,IPPROTO_ICMP);
指定套接字为原始套接字,和ICMP协议,然后按照ICMP协议封包,sendto,
你可以搜索一下。类似代码很多的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表