不能扫描对等主机端口

luoya9301 2007-08-08 03:13:44
两台机子用跳线对连的,可以相互ping通,下面这个程序,分别在两台主机上对本机的端口扫描没有问题,但是扫描另一台主机的端口就不行了,为什么。
#include <stdio.h>
#include <string.h>
#include <winsock.h>
int main(int argc, char *argv[]) {
int mysocket;
int pcount = 0;
struct sockaddr_in my_addr;
WSADATA wsaData;
WORD wVersionRequested=MAKEWORD(1,1);
if(argc < 4)
{
printf("用法: %s <主机> <开始端口><结束端口>\n", argv[0]);
exit(1);
}
WSAStartup(wVersionRequested , &wsaData)
for(int i=atoi(argv[2]); i < atoi(argv[3]); i++)
{
mysocket = socket(AF_INET, SOCK_STREAM,0))
my_addr.sin_family = AF_INET;

my_addr.sin_port = htons(i);
my_addr.sin_addr.s_addr = inet_addr(argv[1]);
if(connect(mysocket, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == SOCKET_ERROR)
closesocket(mysocket);
else{
pcount++;//下一个端口
printf("端口 %d开放! \n", i);
}}

printf("主机%s共有%d个端口开放! ", argv[1],pcount);
closesocket(mysocket);
WSACleanup();
return 0;
}
1、什么叫 “对本机的端口扫描没有问题,但是扫描另一台主机的端口就不行了”
具体症状?
2、主机名用的是ip,还是名字?
3、不行是指程序弹框,还是没有正确结果?没有正确结果在哪一步出错, 错误码是什么?
4、行又是指什么?得到正确结果?

1、运行时扫描本机的端口没有问题,本机开启的端口可以扫描得到,将扫描的IP地址指为另一台就不能扫描出开启的端口。扫描的结果为0个端口开放。其实应该是有端口开放的。
2、主机用的是IP地址。如10.113.125.10
3、不行就是不能扫描出开启的端口。
...全文
150 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
luoya9301 2007-08-10
  • 打赏
  • 举报
回复
确实是防火墙的问题,程序没有问题,本来机子没有装防火墙软件,哪里知道windows自己的防火墙拦截了端口扫描的程序。关闭后没有问题了,谢谢各位TX
cedricporter 2007-08-09
  • 打赏
  • 举报
回复
看看
cailei0596 2007-08-09
  • 打赏
  • 举报
回复
参与一下
yztgx 2007-08-09
  • 打赏
  • 举报
回复
用telnet IP port测试一下目标端口是否开放,来检验你的程序有没有问题
用syn扫描端口会快的多
netcreator 2007-08-09
  • 打赏
  • 举报
回复
我刚用我自己写的全功能描述器扫描本机,好久了,只扫到25端口是开放的,smtp
netcreator 2007-08-09
  • 打赏
  • 举报
回复
而且这样的扫描用的是阻塞模式,会非常慢!对吧?
如果用的是非阻塞模式,通常也是异步模式的话,实现是得不到结果,肯定会永久为0的,因为connect立即返回了,而且是不可达返回值
netcreator 2007-08-09
  • 打赏
  • 举报
回复
通常有防火墙的情况下,端口都是关闭的,你返过来试过吗?就是在本机这样全连接如果可以,在另一台机上去试试连本机
danscort2000 2007-08-08
  • 打赏
  • 举报
回复
被端口屏蔽了吧

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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