그리고 TCP는 스트림 형식이다 보니, 저쪽에서 send()로 보낸 것을 recv() 호출 한 번으로 다 받지 못하기도 합니다. 예를 들어 ‘h’, ‘e’, ‘l’, ‘l’, ‘o’, 0x00을 보냈지만, ‘h’, ‘e’까지만 받는 것이지요. 그러나 이는 비정상적인 상황이 아니라 스트림 형식 자체의 특징이라고 할 수 있습니다. 원하는 만큼 계속해서 더 받아 오든지 아니면 받을 때마다 부분 데이터라도 필요한 처리를 하면 됩니다. 그리고 이 예시 코드에서는 출력을 했습니다(➐).
이 프로그램을 실행하면 다음과 같이 ‘상대방이 보낸 스트림 내용과 상대방의 끝점’과 수신한 데이터가 출력됩니다.
11.22.33.44:51409 hello
UDP 소켓과 마찬가지로 TCP에서도 보통 소켓 하나로 송수신을 모두 할 수 있습니다. 송신을 위한 소켓과 수신을 위한 소켓을 따로 만들 필요가 없습니다.