개인 공부/네트워크

[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);
...