linux终端通过IP或域名访问网站

linux终端通过IP或域名访问网站
linux终端通过IP或域名访问网站

linux终端通过IP或域名访问网站

百度的IP为:220.181.111.148,在linux里编译下面代吗,

命令为:gcc -o http http.c

访问百度:./http 220.181.111.148

或:./http https://www.360docs.net/doc/b815801394.html,

// http.c

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define BUFSIZE 204800

int main(int argc, char *argv[]) {

if (argc != 2) {

printf("Input your host.example:%s https://www.360docs.net/doc/b815801394.html,\n",argv[0]);

printf("Or input your host.example:%s 220.181.111.148\n",argv[0]);

exit(1);

}

struct hostent * site;

char *domain=argv[1];

int servPort=80;

site = gethostbyname(domain);

char *echoString;

memset(echoString, 0, 4096);

strcat(echoString, "GET / HTTP/1.1\n");

strcat(echoString, "Host:");

strcat(echoString,domain);

strcat(echoString, "\n");

strcat(echoString, "User-Agent: Mozilla/5.0 (Windows; U;Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1\n");

strcat(echoString, "Connection: Keep-Alive");

strcat(echoString, "\n\n");

int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

if (sock < 0) {

printf("socket() failed\n");

exit(1);

}

struct sockaddr_in servAddr;

memset(&servAddr, 0, sizeof(servAddr));

memcpy(&servAddr.sin_addr,site->h_addr_list[0],site->h_length);

servAddr.sin_family = AF_INET;

servAddr.sin_port = htons(servPort);

if (connect(sock, (struct sockaddr *) &servAddr, sizeof(servAddr)) < 0) { printf("connect() failed\n");

exit(1);

}

size_t echoStringLen = strlen(echoString);

ssize_t numBytes = send(sock, echoString, echoStringLen, 0);

if (numBytes < 0) {

printf("send() failed");

exit(1);

}

else if (numBytes != echoStringLen) {

printf("send(), sent unexpected number of bytes");

exit(1);

}

unsigned int totalBytesRcvd = 0;

while (totalBytesRcvd < echoStringLen) {

char buffer[BUFSIZE];

numBytes = recv(sock, buffer, BUFSIZE, 0);

if (numBytes < 0) {

printf("recv() failed");

exit(1);

}

else if (numBytes == 0) {

printf("recv(), connection closed prematurely");

break;

}

totalBytesRcvd += numBytes;

buffer[numBytes] = '\0';

printf(buffer);

}

printf("\n");

close(sock);

exit(0);

}

相关主题
相关文档
最新文档