작성
·
307
0
send를 사용할 때 블로킹 모드는 모든 데이터를 다 보내고 논블로킹은 일부만 보낼 수가 있다고 하셨는데 이 보낸다는 게 send를 사용한 사용자 커널에 있는 송신 버퍼에 보낸다는 건가요? 아니면 받는 사용자 커널에 있는 수신 버퍼에 보낸다는 건가요?
그리고 논블로킹 모드에서 데이터를 일부만 보낼 수가 있으면 UDP에서는 데이터 경계의 대한 개념이 있으니까 논블로킹을 사용할 수 없는 건가요?
답변 1
0
논블로킹은 일부만 보낼 수가 있다고 하셨는데 <<
함수가 전송 완료 여부와는 관계없이 일단 바로 빠져나오는 것이고,
굳이 다 보낼 수 있는데 일부만 보내거나 하는 것은 아닙니다.
[보낸다]는 것은 커널 송신 버퍼에 복사를 하는 것을 의미하나 이것은 아직은 디테일에 가깝습니다.
'함수가 바로 빠져나오는 것'은 UDP도 동일하기에 논블로킹이 있습니다.
udp blocking vs nonblocking
구글링을 더 해보시면 자세한 정보가 있습니다.