IP 주소가 들어있는 파일로 모든 웹 서버를 찾는 프로그램이 필요합니다. 포트 80이 열려 있으면 IP 주소가 서버라는 것을 알았습니다. 그리고이 코드를 작성했지만 작동하지 않습니다. # 80 포트가 닫혀있다 심지어 opend 80 (예 : 194.153.145.104)와 IP 쓰기. 내가 틀린 곳? 나는 열려있는 포트와 여기에 IP의에 대한 cheking 해요 : 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이 닫히고 포트 80이 열린 경우에도 IP를 쓰는 것으로 항상 말합니다. (예 : 194.153.145.104) – cattaneo