SOCK_DGRAM은 read/write 사용할 수 없는 이유

2019. 7. 22. 14:54드론

유닉스에서 소켓은 결국 하나의 소켓파일로 다뤄진다. 따라서 저수준 파일 제어에서 사용되는 read, write를 사용할 수 있을까라는 질문에는 서버의 연결 유무가 결정한다

 

결론적으로는 TCP는 서버와 연결된 상태에서 데이터 송수신을 하기 때문에 send, recv를 write, read로 대체할 수 있다. 하지만 SOCK_DGRAM인 UDP는 서버와 통신할 때 연결된 상태에서 하지 않는다. sendto, recvfrom의 API를 보면 데이터만 전달하는 것이 아닌 보낸 곳을 명시를 하게 된다. 따라서 SOCK_DGRAM은 read/write 사용할 수 없게 된다