windows 네트워크-http 요청 보 내기
2681 단어 네트워크
#include
#include
#include
#include
#pragma comment(lib,"ws2_32.lib")
#define DEFAULT_BUFFER 2048
#define DEFAULT_MESSAGE "GET / HTTP/1.1\r
Host:10.0.10.1\r
\
Connection:keep-alive\r
\
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r
\
user-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36\r
\
Accept-Encoding: gzip,deflate,sdch\r
\
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6\r
\
\r
"
int maintt(int argc,char* argv[])
{
WSADATA wsd;
SOCKET sClient;
int iPort = 80;
char *serverIP = "10.0.10.1";
int ret;
char szBuffer[DEFAULT_BUFFER],
szMessage[1024]; // Message to send to sever
struct sockaddr_in server;
struct hostent *host = NULL;
if(argc > 1)
{
iPort = atoi(argv[1]);
}
if(argc > 2)
{
serverIP = argv[2];
}
if (WSAStartup(MAKEWORD(2,2), &wsd) != 0)
{
printf("Failed to load Winsock library!
");
system("pause");
return 1;
}
sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sClient == INVALID_SOCKET)
{
printf("socket() failed: %d
", WSAGetLastError());
return 1;
}
server.sin_family = AF_INET;
server.sin_port = htons(iPort);
server.sin_addr.s_addr = inet_addr(serverIP);
if (server.sin_addr.s_addr == INADDR_NONE)
{
host = gethostbyname(serverIP);
if (host == NULL)
{
printf("Unable to resolve server: %s
", serverIP);
system("pause");
return 1;
}
CopyMemory(&server.sin_addr, host->h_addr_list[0],
host->h_length);
}
if (connect(sClient, (struct sockaddr *)&server,
sizeof(server)) == SOCKET_ERROR)
{
printf("connect() failed: %d
", WSAGetLastError());
system("pause");
return 1;
}
strcpy(szMessage, DEFAULT_MESSAGE);
ret = send(sClient, szMessage, strlen(szMessage), 0);
if (ret == 0)
{ perror("send();");}
else if (ret == SOCKET_ERROR)
{
printf("send() failed: %d
", WSAGetLastError());
}
printf("Send %d bytes
", ret);
ret = recv(sClient, szBuffer, DEFAULT_BUFFER, 0);
if (ret == 0) // Graceful close
perror("send();");
else if (ret == SOCKET_ERROR)
{
printf("recv() failed: %d
", WSAGetLastError());
}
szBuffer[ret] = '\0';
printf("RECV [%d bytes]: '%s'
", ret, szBuffer);
system("pause");
closesocket(sClient);
WSACleanup();
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
리눅스 입문~컴퓨터 시스템의 하드웨어의 개요와 리눅스의 주요 기능과 그 구조의 개요~별도의 기사에서 각 Linux의 기능인 프로세스 및 메모리 관리 메커니즘에 대한 자세한 내용을 요약합니다. 입력 장치, 네트워크 어댑터를 통해 컴퓨터에서 처리를 수행하도록 요청 프로세스 관리 메모리 관리 장치 조작 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.