2011-01-19 4 views
0

과제에서 2 대의 랩톱의 무선 LAN 카드를 ad hoc 모드로 전환 한 다음 적절한 SSID를 선택하여 2 대의 랩톱 사이에 ad hoc 네트워크를 구성해야했습니다. 랩톱 사이에 애드혹 네트워크를 만들었습니다. 그런 다음 하나의 랩톱에서 간단한 "Hello World"메시지를 보내고 소켓을 사용하여 다른 하나에서 수신하는 "보낸 사람"및 "수신기"응용 프로그램을 개발해야했습니다. 나는 udp 데이터 그램 소켓과 UDP 패킷을 사용하여 성공적으로 수행했습니다. 자바에서) adhoc 네트워크에 서버가 없기 때문에 유일한 문제는 패킷 형식이 다음과 같이 나타나야한다는 것입니다. 데이터는 최대 길이가 64KB 인 바이트 배열로 표시됩니다 (IP 주소가 표시된다고 가정). 2 바이트) :UDP 패킷의 형식을 설정하는 방법은 무엇입니까?

| | | | | | | | | | | |H|E|L|L|O| |W|O|R|L|D|       
__________|___________| 
Sender ID |Reciever ID|  data 
(4 bytes) (4 bytes) 

나는 reciver입니다 측에서 당신이 packet.getAddress()를 사용하여 전송 된 패킷의 주소를 얻을 수 있다는 사실을 알고, 그리고 리시버 측의 주소가 이미 알려져 있지만, 내가 이해 DNT 이 형식의 목적이나 패킷의 형식을 설정하는 방법. udp 패킷의 형식 및 Java에서 udp 패킷의 형식을 설정하는 방법에 대해 설명합니다. 버퍼 바이트 배열, intelAddress 및 포트를 지정하여 dataGram 패킷을 만드는 것은 패킷의 형식을 어떻게 설정합니까? 버퍼 바이트 배열을 위에서 언급 한 것과 같은 형식으로 수정해야합니까 (송신자의 주소가 전송 되더라도)? 최대한 빨리 회신 해주십시오. 어떤 도움을 주시면 감사하겠습니다. 미리 감사드립니다.

답변

1

UDP 패킷에는 암시 적 형식이 있습니다. http://en.wikipedia.org/wiki/User_Datagram_Protocol Java는 거기에 있어야하는 8 개의 헤더 바이트 (소스 포트, 대상 포트, 길이, 체크섬)를 처리합니다. 단일 바이트의 데이터 만 제공하더라도 8 바이트 헤더는 여전히 Java에 의해 올바르게 작성됩니다. 당신은 그 헤더를 구성 할 책임이 없으며 그 헤더에 들어있는 값만 제공합니다.

제어 할 수있는 것은 모두 패킷의 데이터 섹션입니다. 원하는 방식으로 서식을 지정할 수 있습니다. 위에 표시된 것처럼 형식을 지정해야하는 것처럼 들립니다. 해당 형식의 가치는 논쟁의 여지가 있습니다 (출처, 수 신지 주소).하지만 상관없이 준수해야합니다.

예, 제공하는 것과 동일한 형식으로 버퍼 바이트 배열을 수정해야합니다. 다른 값 (IP 주소 및 포트)은 헤더를 구성하거나 실제로 패킷을 전송하는 데 사용됩니다.

편집 : 죄송합니다. 4 바이트 헤더를 8로 대체했습니다. 내가 지금 프로토콜 스펙을 읽을 수 있다고 생각할거야.

관련 문제