이 예제는 포트를 0으로 설정하여 사용 가능한 포트 번호를 선택하도록 운영 체제에 요청합니다. 특정 포트 번호를 사용하려면 줄을 변경하려면 여기서 간단한 체크섬 계산을 설명합니다. 예를 들어 비트스트림 011001010100 011001101010101010011001110011110111: VoIP에서 대기 시간 및 지터가 주요 관심사라고 가정해 보겠습니다. TCP가 누락된 데이터의 재전송을 요청하는 동안 응용 프로그램에 후속 데이터를 제공하지 않으므로 패킷이 손실된 경우 TCP를 사용하면 지터가 발생합니다. UDP를 사용하는 경우 최종 사용자 응용 프로그램은 메시지가 수신되었는지 실시간으로 확인하는 것과 같은 필요한 핸드셰이킹을 제공해야 합니다. 전송 주소는 소켓 주소 구조에 정의되어 있습니다. 소켓은 다양한 유형의 통신 인터페이스와 함께 작동하도록 설계되었기 때문에 인터페이스는 매우 일반적입니다. 포트 번호를 매개 변수로 받아들이는 대신 사용 중이던 주소 패밀리(네트워크 유형)에서 실제 형식이 결정되는 sockaddr 구조를 사용합니다. 예를 들어 UNIX 도메인 소켓을 사용하는 경우 실제로 파일 시스템에서 파일을 만듭니다. 소켓에 대한 논의에서 TCP/IP 프로토콜을 사용하는 소켓과 연결 지향 소켓을 사용한 프로그래밍의 예를 다루었습니다. 여기서는 UDP/IP를 통해 연결없는 소켓을 사용하는 예제를 간략하게 살펴보겠습니다. 스트리밍 : TCP는 네트워크 전송을 위해 패킷 구조를 사용하지만 TCP는 진정한 스트리밍 프로토콜이며 응용 프로그램 수준 네트워크 작업은 투명하지 않습니다.
일부 프로토콜은 각 응용 프로그램 트랜잭션을 명시적으로 캡슐화합니다. 모든 쓰기에 대해 일치하는 읽기가 있어야 합니다. 이러한 방식으로 데이터 스트림을 논리적 레코드 구조로 응용 프로그램 파생 세분화가 네트워크를 통해 보존됩니다. TCP는 데이터 스트림에 부과된 이러한 암시적 구조를 유지하지 않으므로 네트워크 프로토콜 내에서 쓰기 및 읽기 작업 간에 페어링이 없습니다. 예를 들어, TCP 애플리케이션은 네트워크 연결에 순서대로 3개의 데이터 블록을 쓸 수 있으며, 이는 단일 읽기 작업에서 원격 리더에 의해 수집될 수 있다. TCP 세션에 사용되는 데이터 블록(세그먼트)의 크기는 세션 시작 시 협상됩니다. 발신자는 데이터 전송에 대해 가능한 가장 큰 세그먼트 크기를 사용하려고 시도하며, 수신기의 최대 세그먼트 크기, 구성된 발신자의 최대 세그먼트 크기 및 최대 지원 가능한 비 조각화 패킷 크기의 제약 조건 내에서 네트워크 경로(경로 최대 전송 장치 [MTU])를 참조하십시오. 경로 MTU는 TCP 연결이 활성화되어 있는 동안 네트워크 내에서 발생할 수 있는 변경 내용을 조정하기 위해 주기적으로 새로 고쳐집니다. 대부분의 경우 UDP 응용 프로그램은 신뢰성 메커니즘을 사용하지 않으며 심지어 안정성 메커니즘에 의해 방해를 받을 수도 있습니다. 스트리밍 미디어, 실시간 멀티플레이어 게임 및 VOIP(음성)는 UDP를 자주 사용하는 애플리케이션의 예입니다.
이러한 특정 응용 프로그램에서 패킷 손실은 일반적으로 치명적인 문제가 아닙니다. 응용 프로그램에 높은 수준의 안정성이 필요한 경우 전송 제어 프로토콜과 같은 프로토콜을 대신 사용할 수 있습니다. 예를 들어 TCP 또는 그 일부가 IP를 사용하지 않는 파일 전송 프로토콜(FTP) 및 단순 메일 전송 프로토콜(SMTP)에 사용됩니다. 예를 들어 google.com 주소를 찾으려고 한다고 가정합니다. UDP는 속도가 바람직하고 오류 수정이 필요하지 않은 경우 UDP가 사용됩니다. 예를 들어 UDP는 라이브 방송 및 온라인 게임에 자주 사용됩니다. TCP와 달리 UDP는 데이터를 보내기 전에 연결을 설정하지 않고 전송합니다. 이 때문에 UDP를 „연결 없는“이라고 합니다.