我需要找到所有网络服务器到包含IP地址的文件的程序。 如果他的端口80打开,我发现IP地址是服务器。我写了这段代码,但它不起作用。 Аlways说80端口是关闭的,即使我用开放端口80写IP也是如此(例如194.153.145.104)。我错在哪里? 我cheking这里IP与开放端口:http://www.yougetsignal.com/tools/open-ports/C/UNIX:端口扫描器
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <stdio.h>
#include <netdb.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
u_short port=80; /* user specified port number */
short int sock = -1; /* the socket descriptor */
struct hostent *host_info; /* host info structure */
struct sockaddr_in address; /* address structures */
char addr[1023];
char buf[20];
char *filename;
filename=argv[1];
FILE *file = fopen(filename, "r");
while (!feof(file))
{
fscanf(file,"%s",buf);
strncpy(addr, buf, 1023);
bzero((char *)&address, sizeof(address));
address.sin_addr.s_addr = inet_addr(addr);
address.sin_port = htons(port);
address.sin_family=AF_INET;
sock = socket(PF_INET, SOCK_STREAM, 0);
if (sock == -1) {
fprintf(stderr, "Error: could not assign master socket\n");
exit (1);
}
if(connect(sock,(struct sockaddr *)&address,sizeof(address)) == 0)
printf("%s is a web server\n", addr);
else printf("%s isn't a web server\n", addr);
close(sock);
}
return 0;
}
这里有问题吗?什么不行? – FDinoff
是的。程序总是说80端口是关闭的,即使我用打开的端口80写IP也是如此(例如194.153.145.104) – cattaneo