linux下用终端访问百度网站
linux下用终端访问百度网站
// http.c
#include
#include
#include
#include
#include
#include
#include
#include
#define BUFSIZE 10240
int main(int argc, char *argv[]) {
if (argc != 3) {
printf("Parameter(s): \n");
exit(1);
}
char *servIP = argv[1];
in_port_t servPort = atoi(argv[2]);
char *echoString = "GET / HTTP/1.1\nHost: \nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) GeckoFirefox/1.0.1\nConnection: Keep-Alive\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));
servAddr.sin_family = AF_INET;
int rtnVal = inet_pton(AF_INET, servIP, &servAddr.sin_addr.s_addr);
if (rtnVal == 0) {
printf("inet_pton() failed, invalid address string\n");
exit(1);
}
else if (rtnVal < 0) {
printf("inet_pton() failed\n");
exit(1);
}
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;
//printf("Received: ");
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(),