최근 소켓에 대해 알아보고 있는데 요청을 보내면 요청한 IP 주소와 포트 번호를 네트워크 바이트 순서로 변환해야 한다는 사실을 발견했습니다. 그렇지 않으면 리틀 엔디안, 빅 엔디안으로 인해 파싱 문제가 발생합니다
근데 소켓이 설정된 후 텍스트 데이터를 바이트 순서로 처리하면 안되는 이유는 무엇입니까?
예를 들어 제가 보내는 것은 우리 모두가 알고 있듯이 현재 유니코드 문자 집합이 1바이트 이상이면 왜 소켓에서 수신한 데이터를 정상적으로 인식할 수 있는지에 대한 문제가 발생합니다. ?
소켓은 바이트 단위만 인식하며, 쓰여진 바이트는 상대방이 같은 순서로 읽게 됩니다.
유니코드 인코딩에는 이미 바이트 순서가 포함되어 있습니다. 예를 들어 한쪽 끝은 UTF16LE에 따라 바이트를 디코딩해야 합니다. (특별한 경우: UTF8의 인코딩 단위는 1바이트입니다. 주문 문제).
소켓을 사용하여 일반 데이터를 보내는 경우 바이트 순서를 고려해야 합니다. 이 고려 사항은 일반적으로 직렬화 프로토콜의 일부입니다.
바이트 순서는 정수용입니다. 포트 번호가 16비트 정수이므로 빅엔디안 문제가 있습니다. 다른 건 상관없어
TCP/UDP 및 기타 하위 수준 네트워크 프로토콜이 이러한 방식으로 규정되어 있기 때문입니다. 소켓이 설정된 후 전송된 데이터는 설계한 프로토콜과 동일하므로 송신자와 수신자 모두 동일한 바이트 순서를 사용하는 한 원하는 바이트 순서를 사용할 수 있습니다.