扫描端口的程序,能扫描本机问题,不能扫描同组的其他计算机
两台机子用跳线对连的,可以相互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;
}