반응형
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();
});
}
프로젝트에서 동일한 설정을 테스트했는데 다음과 같은 상황에서 작동했습니다.
- 안드로이드 -> 안드로이드
- 안드로이드 -> iOS
하지만 iOS -> 안드로이드는 작동하지 않습니다. 앱을 실행하면 아이폰이 데이터를 보내는데 안드로이드는 아무것도 받지 않는 것을 볼 수 있다. 안드로이드 쪽에 문제가 있나요? 내가 뭘 잘못하고 있는 거지?
나는 결국 내가 원하는 것을 이루기 위해 Bonsoir라는 패키지를 사용하게 되었다. 그것은 당신이 네트워크 서비스를 방송하고 받을 수 있게 해주며, 나는 그것이 에어플레이와 구글 캐스팅과 같은 가정용 프로그램과 같은 기반 기술이라고 확신한다. 그것은 또한 매우 안정적이고 사용하기 쉽습니다.
특정 문자열을 보내기 위해 사전 형식의 문자열 인수를 클래스 내 속성에 전달했습니다.
패키지를 찾을 수 있습니다.
반응형
'개발하자' 카테고리의 다른 글
kubernetes에 3가지 종류의 프로브가 필요한 이유는 무엇입니까: startupProbe, readinessProbe, livityProbe. (0) | 2022.11.10 |
---|---|
왜 내 쿠버네티스 서비스가 끝점을 찾지 못하지? (0) | 2022.11.10 |
빠른 사용API 및 Pydantic, 설명과 함께 옵션 필드를 정의하려면 어떻게 해야 합니까? (0) | 2022.11.09 |
Svelte에서 형제 구성 요소 간에 데이터 전달 (0) | 2022.11.09 |
펄럭이는 안드로이드 맛으로 apk 생성 (0) | 2022.11.09 |