標籤:ada har ast scan readline i++ null argv inet_addr
int socket_readline(SOCKET socket,char *head) { char c = ‘\0‘; int r = 0,i = 0; while(recv(socket,&c,1,0)>0) { if(r == 1) { if(c == ‘\n‘) { break; } else { r = 0; } } else if(c == ‘\r‘) { r = 1; } else head[i++] = c; } head[i] = ‘\0‘; if(strcmp(head,"\r\n") == 0) return -1; else return i; } int main(int argc, char* argv[]){WSADATA wsaData;WORD sockVersion = MAKEWORD(2,0);WSAStartup(sockVersion,&wsaData);SOCKET s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(s==INVALID_SOCKET){return -1;}sockaddr_in servAddr;servAddr.sin_family=AF_INET;servAddr.sin_port=htons(80); servAddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");if(connect(s,(sockaddr*)&servAddr,sizeof(servAddr))==-1){return -1;}char *httpHead = "GET / HTTP/1.1\r\n""Host: 127.0.0.1\r\n" "Connection: Keep-Alive\r\n" "\r\n";send(s,httpHead,strlen(httpHead),0);char *http_head_recv = new char[3000]; int Content_Length = 0; for(int flag=1;flag>0;) { memset(http_head_recv,0,3000); flag = socket_readline(s,http_head_recv); if(strstr(http_head_recv,"Content-Length:") != NULL){ sscanf(http_head_recv,"Content-Length: %d",&Content_Length); } printf("%s\n",http_head_recv); } free(http_head_recv);if(Content_Length>0){char *msg = new char[Content_Length+1];memset(msg,0,Content_Length+1);recv(s,msg,Content_Length,0);msg[Content_Length] = ‘\0‘;printf("%s\n",msg);free(msg);}closesocket(s);WSACleanup();return 0;}
winsock請求http