개인 공부/네트워크
[Chapter 05-1] 에코 클라이언트의 구현
Koalitsiya
2023. 8. 21. 15:22
Chapter 4의 에코 클라이언트에는 문제가 있음
TCP는 데이터의 경계가 없어 전송 시 나눠서 전송 되어도 문제가 발생하지 않음
에코 클라이언트는 문장 단위로 데이터를 송수신하기에 데이터의 경계의 구분이 필요
→ write한 데이터의 크기만큼 데이터가 들어올 때까지 클라이언트는 read를 반복해서 호출하는 것으로 해결
...
str_len = write(sock, message, strlen(message));
recv_len = 0;
while(recv_len < str_len) {
recv_cnt = read(sock, &message[recv_len], BUF_SIZE - 1);
if(recv_cnt == -1)
error_handling("read() error!");
recv_len += recv_cnt;
}
message[recv_len] = 0;
printf("Message From Server: %s", message);
...