안녕하세요.
ARM 보드에서 소켓 프로그래밍을 하고 있습니다.

문제의 client 코드를 요약하면

while(1) {
      write(client_sock, txbuf, sizeof(txbuf));
     read(clinent_sock, rxbuf, sizeof(rxbuf);
}

입니다.

문제가 발생하는 부분은 read 함수 부분에서 server로부터 packet이 들어와야만 프로그램이 다음 코드로 진행이 된다는 것입니다. 즉 server로부터 packet이 없으면 read에 머물러 있습니다. 처음에 제가 생각한 것은 read 함수는 소켓이 비어 있으면 크기가 0이므로 0를 return하고 다음으로 넘어갈 거라고 생각했는데 그렇지 않은 것 같습니다. 제가 아직 초보라 read의 return 값을 살펴보았습니다만 error일 때는 -1, 그외는 읽은 buf의 크기인데 packet이 들어오면 0보다 큰 값인데 packet이 들어오지 않으면 어떻게 되는건가요?

검색을 해보고 있지만 시일이 촉박해 여기에 질문 올립니다.

많은 고수님들의 조언 부탁드립니다. :)