read(), write() 로 메세지를 읽고, 받을때는 항상 문자열의 형
글쓴이: jagalchee / 작성시간: 일, 2004/03/28 - 4:45오후
C 에서 소켓 프로그래밍을 할때, 서버와 클라이언트간에 메세지를 주고 받을때
read(), write(), 혹은 recv(), send() 를 쓰지 않습니까?
이때, 이 함수들이 주고 받는 데이타들은 모두 문자열의 형태인가요?
아니면, 보낼때(write 혹은 send 할때) 보내는 데이타의 형태에 따라서, 문자열이 될 수도 잇고, 정수도 될 수도 있고, 실수도 될 수 있는 것인가요?
그리고, 보낼땐 정수형태로 보냈는데, 받을 때 문자열로 받거나 그럴 수 잇나요?(물론 그러면 안되겟찌만요..)
Forums:
네트워크 상의 데이터는 그냥 데이터일뿐입니다. 00 BB 로 보낸다면 받
네트워크 상의 데이터는 그냥 데이터일뿐입니다. 00 BB 로 보낸다면 받는 쪽에서는 00 BB를 받는 것이고, 33 55 FF를 보내면 33 55 FF를 받을 뿐입니다.
정수형(int4)등을 보낸다면, 아키텍쳐에 따라서 데이터 순서가 달라질 수 있습니다. (endian 문제) 그래서 POSIX에는 htonl이나 ntohl같은 함수가 준비되어 있습니다.
네트워크 상의 데이터에는 '무슨 형이다'라는건 정의되어 있지 않으므로, 보내는 형과 받는 형이 다른것은 문제가 되지 않습니다. (내부에서 처리만 해준다면 말입니다. 물론 같은 형으로 받는게 처리하기 편하겠지요)
댓글 달기