본문 바로가기

개발하자

Android에서 iOS에서 Fluter/Dart UDP 멀티캐스트 전송이 수신되지 않음

반응형

Android에서 iOS에서 Fluter/Dart UDP 멀티캐스트 전송이 수신되지 않음

이 설정으로, 나는 UDP 방송을 송수신할 수 있는 두 개의 안드로이드 폰을 얻을 수 있었다. 나는 또한 이 설정을 사용하여 물리적 안드로이드 기기에서 아이폰으로 UDP 방송을 보낼 수 있다.

하지만, 내 문제는 그것이 반대로 작동하지 않는 것 같다는 것이다. 송신 기능은 아이폰에서 실행되며, 수신 기능은 안드로이드폰에서 실행된다. 안드로이드폰은 절대 방송을 받지 못한다. 아이폰의 전송 기능에 문제가 있는 것 같습니다. 설정은 다음과 같습니다.

이전에 저를 위해 일한 적이 있는 안드로이드 쪽:

const port = 37069;
const address = '224.0.0.1';

void receive() async {
    final socket = await RawDatagramSocket.bind(address, port);
    socket.multicastHops = 1;
    socket.broadcastEnabled = true;
    socket.writeEventsEnabled = true;
    socket.listen((RawSocketEvent event) {
      print("still listening...");

      final packet = socket.receive();
      print("The packet was $packet");
      print("It came from ${packet?.address}");
    });
  }

그리고 이것이 아이폰 쪽입니다. 그게 문제인 것 같습니다. 오류가 안 나는데, 파일에 추가해야 할 권한이 있는지 궁금합니다.

void broadcast() {
    // for the iphone
    RawDatagramSocket.bind(address, port).then((RawDatagramSocket socket) {
      socket.multicastLoopback = false;
      socket.broadcastEnabled = true;
      socket.readEventsEnabled = true;
      for (int i = 0; i < 150; i++) {
        socket.send("Sent #$i".codeUnits, InternetAddress(address), port);
        print("sent $i");
      }
      socket.close();
    });
  }

프로젝트에서 동일한 설정을 테스트했는데 다음과 같은 상황에서 작동했습니다.

  1. 안드로이드 -> 안드로이드
  2. 안드로이드 -> iOS

하지만 iOS -> 안드로이드는 작동하지 않습니다. 앱을 실행하면 아이폰이 데이터를 보내는데 안드로이드는 아무것도 받지 않는 것을 볼 수 있다. 안드로이드 쪽에 문제가 있나요? 내가 뭘 잘못하고 있는 거지?




나는 결국 내가 원하는 것을 이루기 위해 Bonsoir라는 패키지를 사용하게 되었다. 그것은 당신이 네트워크 서비스를 방송하고 받을 수 있게 해주며, 나는 그것이 에어플레이와 구글 캐스팅과 같은 가정용 프로그램과 같은 기반 기술이라고 확신한다. 그것은 또한 매우 안정적이고 사용하기 쉽습니다.

특정 문자열을 보내기 위해 사전 형식의 문자열 인수를 클래스 내 속성에 전달했습니다.

패키지를 찾을 수 있습니다.


반응형