서버 호스트가 충돌할 때 발생하는 일을 시뮬레이션하려면 다른 호스트에서 클라이언트와 서버를 실행해야 합니다. 그런 다음 서버를 시작하고, 클라이언트를 시작하고, 클라이언트에 줄을 입력하여 연결이 가동되었는지 확인하고, 네트워크에서 서버 호스트를 연결 해제하고, 클라이언트에서 다른 줄을 입력합니다. 또한 클라이언트가 데이터를 보낼 때 연결할 수 없는 서버 호스트의 시나리오도 다룹니다(즉, 연결이 설정된 후 일부 중간 라우터가 다운됨). TCP 예제는 작지만 동일한 아키텍처의 두 컴퓨터에서 클라이언트와 서버를 실행하는 경우 두 개의 SPARC 컴퓨터가 잘 작동한다는 것을 이해해야 합니다. 그러나 클라이언트와 서버가 서로 다른 아키텍처의 두 컴퓨터에있을 때 (서버가 큰 엔디안 SPARC 시스템 freebsd에 있고 클라이언트가 작은 엔디안 인텔 시스템 리눅스에 있다고 말함) 작동하지 않습니다. TCP 서버를 만드는 데 필요한 네 가지 시스템 호출은 소켓, 바인딩, 수신 및 수락입니다. 각각은 특정 목적을 가지고 있으며, 에코 클라이언트 / 서버는 네트워크 응용 프로그램의 유효하고 간단한 예입니다 위의 순서로 호출해야합니다. 이 예제를 사용자 고유의 응용 프로그램으로 확장하려면 서버가 클라이언트에서 수신하는 입력으로 수행하는 작업을 변경하기만 하면 됩니다. 이 예제에서는 신호를 잡는 네트워크 프로그램을 작성할 때 중단된 시스템 호출을 인식해야 하며 이를 처리해야 한다는 것을 알고 있습니다. 이 예제에서는 표준 C 라이브러리에 제공된 신호 함수로 인해 중단된 시스템 호출이 커널에 의해 자동으로 다시 시작되지 않습니다. 일부 다른 시스템은 중단된 시스템 호출을 자동으로 다시 시작합니다.

4.4BSD에서 동일한 예제를 실행하는 경우 신호 기능의 라이브러리 버전을 사용하여 커널이 중단된 시스템 호출을 다시 시작하고 수락해도 오류가 반환되지 않습니다. 서로 다른 운영 체제 간에 이러한 잠재적인 문제를 처리하는 것은 당사가 자체 버전의 신호 함수를 정의하는 이유 중 하나입니다. 【p134】 중단 된 수락을 처리하려면 서버의 주요 함수에서 수락할 호출을 변경합니다. 거의 동시에 5개의 연결이 종료됩니다.