소켓을 통해 mode_t 유형의 변수를 보내야합니다. 어떻게해야합니까? snprintf()를 사용하여 문자열로 변환 할 수 있음을 의미하지만 괜찮습니까?클라이언트 서버 프로그램 및 mode_t
감사
소켓을 통해 mode_t 유형의 변수를 보내야합니다. 어떻게해야합니까? snprintf()를 사용하여 문자열로 변환 할 수 있음을 의미하지만 괜찮습니까?클라이언트 서버 프로그램 및 mode_t
감사
mode_t
을 안전하게 전송하려면 대체 형식으로 변환해야합니다. 통신하는 두 호스트가 mode_t
에 대해 동일한 플래그 정의를 사용할 것으로 생각할 이유가 없으므로이를 정수로 인쇄하는 것조차 충분하지 않습니다. 모든 모드 플래그를 반복하고 각각을 검사해야합니다.
mode_t
는 정수입니다.
실제로 소켓에 텍스트 프로토콜을 사용하는 것이 실제로 (디버그하고 진화하는 것이 더 쉽습니다.) 유용합니다.
물론 문자열을 사용하는 것이 좋습니다. 그러나 정수로 보내려면 <endian.h>
헤더에서 htobe32
및 be32toh
과 같은 기능을 확인할 수 있습니다.
이들은'htonl'과'ntohl' 함수의 비표준 이름입니다 ... 또한'mode_t'는 32 비트에 적합해야하며, 소켓의 양쪽 끝에 같은 비트 패턴을 가지고 있다고합니다 ? –
@R .. 네,하지만이 경우에는 필요하지 않더라도 64 비트 변형이 있습니다. –