안드로이드 udp 소켓 통신 예제

Datagram 소켓에는 DatagramChannel.open 메서드를 통해 채널 자체가 생성된 경우에만 채널이 있습니다. 응용 프로그램에 대한 데이터그램 소켓 구현 팩터리를 설정합니다. DatagramSockets는 TCP 대신 UDP를 통한 네트워크 통신을 위한 Java의 메커니즘입니다. Java는 TCP 대신 UDP를 통해 통신할 수 있는 DatagramSocket을 제공합니다. 그것은 또한 IP의 상단에 내장되어 있습니다. DatagramSockets는 인터넷을 통해 패킷을 보내고 받는 데 모두 사용할 수 있습니다. 소켓이 바인딩된 후 SO_REUSEADDR을 사용하거나 사용하지 않도록 설정하는 동작(isBound(참조))은 정의되지 않습니다. 이 문서에서 사용된 예제에 대한 전체 소스 코드를 얻으려면 GitHub 프로젝트를 체크 아웃할 수 있습니다. UDP가 TCP보다 선호되는 예 중 하나는 TV 채널의 라이브 방송입니다. 이러한 측면에서, 우리는 하나 또는 두 개의 프레임의 손실에 대해 걱정하지 않고 가능한 한 라이브 관객에게 많은 프레임을 전송하고자합니다.

TCP는 신뢰할 수 있는 프로토콜이 기때문에 전송하는 동안 자체 오버헤드를 추가합니다. UDP가 선호되는 또 다른 예는 온라인 멀티플레이어 게임입니다. 카운터 스트라이크 나 의무의 전화와 같은 게임에서, 모든 정보를 릴레이 할 필요는 없지만 가장 중요한 것들. 또한 실제 응용 프로그램의 대부분은 UDP와 TCP의 신중한 혼합을 사용한다는 점에 유의해야합니다. TCP를 통해 중요한 데이터를 전송하고 UDP를 통해 나머지 데이터를 전송합니다. 이 소켓의 원격 주소에 소켓을 연결합니다. 소켓이 원격 주소에 연결되어 있으면 패킷은 해당 주소로만 보내거나 수신될 수 있습니다. 기본적으로 데이터그램 소켓은 연결되지 않습니다. 이 소켓에서 데이터그램 패킷을 받습니다. 이 메서드가 반환되면 DatagramPacket의 버퍼가 수신된 데이터로 채워지습니다. 데이터그램 패킷에는 보낸 사람의 IP 주소와 보낸 사람의 컴퓨터에 있는 포트 번호도 포함됩니다.

소켓이 연결되면 수신 및 송신은 패킷및 소켓의 주소 및 포트와 일치하는 것 외에는 들어오는 패킷과 나가는 패킷에 대한 보안 검사를 수행하지 않습니다. 송신 작업에서 패킷의 주소가 설정되고 패킷의 주소와 소켓의 주소가 일치하지 않으면 IllegalArgumentException이 throw됩니다. 멀티캐스트 주소에 연결된 소켓은 패킷을 보내는 데만 사용할 수 있습니다. 인터넷 프로토콜 v4의 경우 값은 정수로 구성되며, 그 중 가장 중요한 8비트는 소켓에서 전송되는 IP 패킷에서 TOS 옥텟의 값을 나타냅니다. RFC 1349는 TOS 값을 다음과 같이 정의합니다. 소켓이 닫히거나 연결되지 않은 경우이 방법은 영향을 주지 않습니다. 소켓 프로그래밍을 위한 Java API는 Java SE(표준 버전)의 일부입니다. java.io java.net 참조하십시오. 가능한 경우 새로 구성된 DatagramSocket에는 브로드캐스트 데이터그램전송을 허용하도록 SocketOptions#SO_BROADCAST 소켓 옵션이 활성화되어 있습니다.

Posted in Uncategorized