서버 클라이언트 통신에서 read, write 함수 사용에 관한 질문
글쓴이: hongachi7109 / 작성시간: 일, 2020/04/26 - 10:40오후
서버 클라이언트 통신에 대해서 배우고 있는 학생입니다.
예제로 연습해보고 있는데 클라이언트 쪽에서 사용하는 write()함수가 예제에 적혀있는대로 작성하면 값이 다르게 나오더군요.
예제에는
write( client_socket, argv[1], strlen( argv[1])+1);
로 나와있는데, 실제로 서버쪽에서 메세지를 수신받으면 한글자가 잘려서 들어옵니다.
(ex. 클라이언트 쪽에서 message_send 전송 -> 서버에서는 message_sen으로 수신, 글자수도 12가 아닌 11로 받음)
서버 쪽에서는
read ( client_socket, buff_rcv, BUFF_SIZE);
를 통해 메세지를 전송 받습니다. (BUFF_SIZE는 1024로 고정)
그래서 write함수를
write(client_socket, argv[1], strlen(argv[1]));로 수정했더니 정상적으로 메세지를 수신하더라고요.
예제에서 +1을 해준 이유가 \0까지 입력받기 위해서라는데 왜 오히려 글자를 잘라먹는건지 알 수 있을까요?
Forums:
"abcde" 가 5문자이고, strlen(...)
"abcde" 가 5문자이고, strlen(...) + 1 하면 6문자가 전송되는거 맞아요.
받는 측에서 6문자 받고, strlen(...) 하면 5 나오는게 맞습니다.
만약 그렇게 안 나오면 코드 어딘가에 오류가 있을 겁니다.
받는측(서버)에서 strlen 했을 때 5가 나오는게
받는측(서버)에서 strlen 했을 때 5가 나오는게 맞다는 말씀이시죠? 예제 코드 말그대로 복붙한건데 왜 오류가 나는지 모르겠네요...답변 감사합니다
댓글 달기