udp 소켓 통신 예제

엑셀런트 예, 대단히 감사합니다! 나는 단지 작은 추가가 필요하다는 것을 발견했습니다. 서버에서 버퍼를 정리합니다. 따라서 서버에 추가하기만 하면 됩니다: 소켓에 대한 논의에서 TCP/IP 프로토콜을 사용하는 소켓과 연결 지향 소켓을 사용한 프로그래밍 예제를 다루었습니다. 여기서는 UDP/IP를 통해 연결없는 소켓을 사용하는 예제를 간략하게 살펴보겠습니다. UDP 에코 클라이언트는 서버와 유사하지만 bind()를 사용하여 소켓을 주소에 연결하지 않습니다. sendto()를 사용하여 서버에 직접 메시지를 전달하고 응답을 수신하기 위해 recvfrom()를 사용합니다. 첫 번째 매개 변수인 소켓은 소켓 시스템 호출을 통해 만든 소켓입니다. 위의 줄은 포트 9876에서 DatagramSocket 서버소켓을 구성합니다. 보내고 받은 모든 데이터는 이 소켓을 통과합니다. UDP는 연결이 없기 때문에 TCPServer.java에서 수행한 것처럼 새 소켓을 생성하고 새 연결 요청을 계속 수신대기할 필요가 없습니다. 여러 클라이언트가 이 응용 프로그램에 액세스하는 경우 모두 이 단일 도어 인 serverSocket으로 패킷을 보냅니다. BTW, 쿠로즈 / 로스는 자바 소켓 프로그래밍을 커버하고 아래에 설명되지 C 소켓 프로그래밍을 하지 않습니다.

이 섹션에서는 이전 섹션의 동일한 응용 프로그램을 다시 개발 하여 UDP 클라이언트-서버 프로그래밍을 설명 하지만 이번에는 UDP를 통해 설명 합니다. 또한 UDP용 Java 코드가 여러 가지 중요한 방법으로 TCP 코드와 다르다는 것을 알 수 있습니다. 특히, 우리는 (i) 두 프로세스 사이에 초기 핸드셰이킹이 없으므로 환영 소켓이 필요하지 않으며, (ii) 스트림이 소켓에 연결되지 않고, (iii) 송신 호스트가 IP 대상 주소를 연결하여 “패킷”을 생성한다는 것을 알 수 있습니다. 및 포트 번호는 전송하는 바이트의 각 배치에, 그리고 (iv) 수신 프로세스는 패킷의 정보 바이트를 얻기 위해 수신 패킷을 해명해야합니다. 다시 한 번 우리의 간단한 응용 프로그램을 기억 : 전송 주소는 소켓 주소 구조에 정의되어 있습니다. 소켓은 다양한 유형의 통신 인터페이스와 함께 작동하도록 설계되었기 때문에 인터페이스는 매우 일반적입니다. 포트 번호를 매개 변수로 받아들이는 대신 사용 중이던 주소 패밀리(네트워크 유형)에서 실제 형식이 결정되는 sockaddr 구조를 사용합니다. 예를 들어 UNIX 도메인 소켓을 사용하는 경우 실제로 파일 시스템에서 파일을 만듭니다. 파일 전송이 수행되거나 많은 양의 데이터가 부분적으로 전송되는 경우 작업을 완료하는 데 훨씬 더 안정적이어야 합니다.

Posted in Uncategorized