udp 브로드 캐스트 예제

브로드캐스팅은 일대모든 유형의 통신, 즉 네트워크의 모든 노드에 데이터그램을 전송하는 것이다. 지점 간 통신의 경우와 달리 대상 호스트의 IP 주소를 알 필요가 없습니다. 대신 브로드캐스트 주소가 사용됩니다. 패킷이 통신 수신에 관심이 있는지 여부에 관계없이 네트워크의 모든 노드로 전송되기 때문에 브로드캐스팅은 비효율적입니다. 이것은 자원의 낭비일 수 있습니다. IP 주소 255.255.255.255에 대해 특별한 정의가 있습니다. 인터넷 프로토콜 표준에서 이 네트워크, 즉 로컬 네트워크를 의미하는 0.0.0.0 의 브로드캐스트 주소입니다. 이 주소로의 전송은 로컬 네트워크를 다른 네트워크에 연결하는 라우터에 의해 전달되지 않는다는 점에서 정의에 의해 제한됩니다. IPv6는 유니캐스트 및 멀티캐스트 외에도 모든 캐스트를 지원하며, 이 경우 패킷을 그룹의 모든 구성원에게 보낼 수 있지만 모든 멤버에게 보낼 필요는 없습니다. 브로드캐스트 주소 목록이 있으면 이러한 각 주소에 대해 위에 표시된 broadcast() 메서드에서 코드를 실행할 수 있습니다. Java의 UDP 및 데이터그램에 대해 자세히 알아보려면 Java의 UDP 가이드를 참조하십시오. 먼저 메시지를 브로드캐스트하는 방법을 보여 줍니다.

이 정도까지 는 소켓의 setBroadcast() 메서드를 호출하여 패킷이 브로드캐스트될 것이라는 사실을 알려야 합니다: 멀티캐스팅은 이 문제를 해결하고 관심이 있는 소비자에게만 패킷을 보냅니다. 멀티캐스팅은 각 그룹을 나타내는 그룹 구성원 자격 개념을 기반으로 합니다. 이 문서에서는 일대다(브로드캐스트) 및 일대다(멀티캐스트) 통신을 Java에서 처리하는 방법에 대해 설명합니다. 이 문서에서 설명하는 브로드캐스트 및 멀티캐스트 개념은 UDP 프로토콜을 기반으로 합니다. MulticastSocket을 포트에 바인딩한 후 multicast IP를 인수로 사용하여 joinGroup() 메서드를 호출합니다. 이 그룹에 게시된 패킷을 수신할 수 있어야 합니다. leaveGroup() 메서드를 사용하여 그룹을 탈퇴할 수 있습니다. UDP(사용자 데이터그램 프로토콜)는 원격 호스트에 데이터를 전달하기 위해 최선의 노력을 기울이는 간단한 프로토콜입니다.

그러나 UDP 프로토콜은 연결되지 않은 프로토콜이므로 원격 끝점으로 전송되는 UDP 데이터그램이 도착한다고 보장할 수 없으며 전송되는 순서와 동일한 순서로 도착하지도 않습니다. UDP를 사용하는 응용 프로그램은 누락, 중복 및 시퀀스 외 데이터그램을 처리할 수 있도록 준비되어야 합니다. UdpClient 클래스는 UDP를 사용하여 네트워크 서비스와 통신합니다. UdpClient 클래스의 속성 및 메서드는 UDP를 사용하여 데이터를 요청하고 수신하기 위한 Socket을 만드는 세부 정보를 추상화합니다. 매우 유용한 요점. 하지만 위의 두 의견에 따라 수정 필요 :-) 아무 일도 일어나지 않으면 GitHub 데스크톱을 다운로드하고 다시 시도하십시오. 데이터, addr = sock.recvfrom(1024)는 데이터여야 하며, addr = client.recvfrom(1024) 대조적으로, 멀티캐스트 주소는 특정 디바이스 그룹을 해결하는 데 사용되고 유니캐스트 주소는 단일 장치를 해결하는 데 사용됩니다. 다음 코드 예제에서는 소켓을 사용하여 포트 11,000을 사용하여 UDP 데이터그램을 지시된 브로드캐스트 주소 192.168.1.255로 보냅니다. 클라이언트는 명령줄에 지정된 메시지 문자열을 보냅니다. 수신 측에서 브로드캐스트된 메시지를 수신하는 데 필요한 특별한 코드는 없습니다.

일반 UDP 데이터그램을 수신하는 동일한 코드를 다시 사용할 수 있습니다. Java의 UDP 가이드에는 이 주제에 대한 자세한 내용이 포함되어 있습니다. 브로드캐스트는 호스트 식별자의 모든 비트를 설정하여 네트워크의 특정 부분으로 이동될 수 있습니다. 예를 들어 192.168.1부터 IP 주소로 식별된 네트워크의 모든 호스트에게 브로드캐스트를 보내려면 주소 192.168.1.255를 사용합니다. 인터넷 프로토콜 버전 6(IPv6)은 이 브로드캐스트 방법을 구현하지 않으므로 브로드캐스트 주소를 정의하지 않습니다. 대신 IPv6는 모든 호스트 멀티캐스트 그룹에 대한 멀티캐스트 주소를 사용합니다. 그러나 모든 호스트 주소를 사용하도록 정의된 IPv6 프로토콜은 없습니다. 대신 특정 링크 로컬 멀티캐스트 주소를 보내고 받습니다.