-1
그래서 소켓으로 놀고 싶지만 내 read()
호출은 계속 걸려 있습니다. 포트 80에서 임의의 웹 페이지 (예 : yahoo.com)에 연결하고 있습니다. 출력에서 5 바이트를 쓰고 있음을 보여 주지만 아무것도 반환하지 않습니다. 아무도 내가 잘못하고있는 것을 지적 할 수 있습니까?socket read() hanging
portno = 80;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {printf("could not open socket\n");}
server = gethostbyname("yahoo.com");
if (server == NULL)
{
printf("could not get hostbyname\n");
exit(0);
}
printf("Server name:%s\n",server->h_name);
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, server->h_length);
serv_addr.sin_port = htons(portno);
if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0)
{
printf("connect error\n");
}
char buffer[1000];
strcpy(buffer,"GET \\");
printf("bytes in command:%d\n",sizeof(buffer));
n = write(sockfd,buffer,strlen(buffer));
if(n <= 0){printf("could not get page:\n");}
printf("Bytes that where writen:%d\n", n);
printf("reading from socket\n");
n = read(sockfd,buffer,sizeof(buffer));
printf("bytes that where read:%d",n);
시작을 위해'strcpy (buffer, "GET/\ r \ n \ r \ n")'을 시도하십시오 ... – pilcrow