Android 시 뮬 레이 터 가 UDP 패 킷 을 받 는 몇 가지 문제 분석
android 시 뮬 레이 터 UDP 패 킷 을 받 을 수 없습니다.
코드 는 다음 과 같 습 니 다:
DatagramPacket pack = null;
DatagramSocket mail_data = null;
byte receiver[] = new byte[100];
try {
pack = new DatagramPacket(receiver,receiver.length);
mail_data = new DatagramSocket(22221);
mail_data.receive(pack);
}
catch (Exception e) {
e.printStackTrace();
}
receive 함수 가 데 이 터 를 받 지 못 하고 기다 리 고 있 습 니 다.해결 방법:
1.시 뮬 레이 터 실행
2.윈도 명령 줄 열기
실행:telnet localhost 5554
5554 는 시 뮬 레이 터 의 포트 입 니 다.실행 하면 android console 에 들 어 갑 니 다.
3.console 에서 실행:
redir add udp:22221:22221
그 중에서 첫 번 째 포트 번 호 는 PC 의 포트 이 고 두 번 째 포트 번 호 는 시 뮬 레이 터 포트 입 니 다.(포트 맵
이 명령 을 실행 하면 PC 22221 포트 에서 받 은 데 이 터 를 시 뮬 레이 터 22221 포트 로 옮 기 면 22221 포트 에서 UDP 패 키 지 를 받 을 수 있 습 니 다.
즉,안 드 로 이 드 시 뮬 레이 터 의 프로그램 UDP 수신 포트 는 22221 로 설정 하고 PC 서버 는 PC 의 IP+포트 22221 로 UDP 패 킷 을 보 내야 한다.
이때 PC 의 22221 포트 가 점용 됐다.
안 드 로 이 드 시 뮬 레이 터 가 UDP 패 킷 을 받 는 몇 가지 문제
받 은 UDP 패 킷 길이 크기
전송 프로 토 콜 이 protocol buffer 를 기반 으로 하기 때문에 받 은 패 킷 은 동적 으로 변화 합 니 다.자바 패 킷 수신 은 by te[]크기 를 먼저 정의 해 야 합 니 다.이렇게 받 은 데이터 신문 의 길이 가 고정 되 어 받 은 데이터 신문 은 반 직렬 화 될 때 자주 오 류 를 보고 합 니 다.
해결 방법:DatagramPacket.getLength()를 이용 하여 실제 데이터 보고 크기 를 캡 처 하고 이 크기 의 by te[]반 직렬 화 를 다시 정의 하면 됩 니 다.
public static void main(String[] args) throws IOException {
System.out.println(" ");
DatagramSocket datagramSocket = new DatagramSocket(8080);//
byte[] buf = new byte[1024];//
DatagramPacket datagramPacket = new DatagramPacket(buf, 1024);
datagramSocket.receive(datagramPacket);//
String string = new String(datagramPacket.getData(), 0,
datagramPacket.getLength())
+ " from "
+ datagramPacket.getAddress().getHostAddress()
+ ":" + datagramPacket.getPort();
System.out.println(string);
datagramSocket.close();
}
받 은 UDP 패 킷 길이 제한시 뮬 레이 터 는 패 킷 의 크기 에 제한 이 있 습 니 다!8k 이상 의 데 이 터 는 받 을 수 없다.
정량 분석 을 통 해 8193 byte,즉 8K(8192 byte)로 시 뮬 레이 터 를 초과 하면 받 을 수 없다.
어디서 버 려 졌 는 지 알 수 없다!
진짜 기 회 는 제한 이 없다.
더 많은 안 드 로 이 드 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 에서 말 한 것 이 여러분 의 안 드 로 이 드 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.