udp 프로그램에서 이해가 안되는것이 있습니다.
글쓴이: cjy1126 / 작성시간: 수, 2004/02/18 - 8:54오후
udp를 이용해서 에코서버를 작성했습니다.
클라이언트에서 보내는 부분입니다.
str_len = sendto(sock, message, strlen(message), 0, (struct sockaddr*)&serv_addr, sizeof(serv_addr)); addr_size = sizeof(from_addr); printf("sendto: %s... str_len: %2d\n", message, str_len); str_len = recvfrom(sock, message, BUFSIZE, 0, (struct sockaddr*)&from_addr, &addr_size); printf("recvfr: %s... str_len: %2d\n", message, str_len);
서버에서 보내는 부분입니다.
clnt_addr_size = sizeof(clnt_addr); str_len = recvfrom(serv_sock, message, BUFSIZE, 0, (struct sockaddr*)&clnt_addr, &clnt_addr_size); printf("str_len = %2d\n", str_len); sendto(serv_sock, message, str_len, 0, (struct sockaddr*)&clnt_addr, sizeof(clnt_addr));
양쪽 결과값입니다.
str_len = 0 str_len = 0 str_len = 0 str_len = 0 str_len = 0 str_len = 0
sendto에서 리턴값이 0이기때문에 못보내야 하는것 아닌가요?
아무것도 없는 message에 0개의 데이터를 보냈다는건 무슨뜻인가요?
Forums:
0 byte 송신입니다.
0 byte 송신 되어졌다는 뜻입니다. socket 에 문제가 있다는것과는 다른 문제 입니다.
MSDN 도움말 인용입니다.
Calling sendto with a len of zero is permissible and will return zero as a valid value. For message-oriented sockets, a zero-length transport datagram is sent
댓글 달기