2015-01-22 3 views
0

그래서 몇 가지 온도 센서 출력을 추적하고 사용자 정의 설정 값을 충족시키는 히터를 제어하는 ​​Raspberry Pi가 있습니다. 나는 이제 파이와 통화하는 앱을 만들려고하고있어 휴대 전화에서 설정 값과 실제 온도를 읽을 수있다. 그렇게하면서 멀티 캐스트를 사용하여 여러 장치를 사용하도록 확장 할 수 있기를 바랬습니다. 결국 각 장치의 이름과 다양한 센서의 데이터 값을 포함하여 몇 가지 정보를 보내려고합니다. 나는 자바가 모든 정보를 담고있는 데이터 그램 패킷과 함께 보낼 수 있기를 바랬다. C++에서 구조체와 비슷한 것을 생각하고 있었는데 (이것은 자바에서의 첫 번째 시도 중 하나입니다.) 구조체가 존재하지 않기 때문에 문제가 있습니다.소켓을 통해 여러 데이터 값을 보내는 가장 좋은 방법은 무엇입니까?

전 공개적으로 수업을 진행할 수는 있지만 데이터 그램을 통해 보내야합니다. 매우 이상하게 보입니다. Java에서이 작업을 수행하는 더 좋은 방법이 있습니까?

게시 할 코드가 없기 때문에 디자인 문제 일 수 있지만 가능한 솔루션을 보여주는 코드 샘플은 크게 감사하겠습니다.

도움 주셔서 감사합니다.

편집 : 지금 안드로이드 용으로이 글을 쓰고있는 동안 나는 PC에서 비슷한 일을하려고한다. 나는 그들이 어떻게 다른지, 심지어이 경우에도 그렇 겠지만 나는 그것을 버릴 것이라고 생각했다.

답변

1

ByteArrayOutputStream,과 함께 DataOutputStream과 기본 형식 쓰기 방법을 사용하고 후자의 바이트를 DatagramPacket.에 묶습니다. 수신기에서 역방향으로 수행하십시오.

+0

좋아, 'DataOutputStream'에 쓰는 방법을 이해할 수 있지만 'ByteArrayOutputStream'을 사용하는 방법이 약간 퍼지다. 그대로 데이터를 바이트 형식으로 출력 스트림에 넣을 수 있습니까? 거기서 나는 'DatagramPacket'측면을 이해합니다. 다른 측면에서 그것을 읽는 측면에서, 어떤 숫자가 어떤 것인지를 알 수있는 실제 방법이 없다고 생각합니다. 해시 맵과 'ObjectOutputStream'을 사용하여 그 문제에 대한 해결책으로 생각하고 데이터 그램으로 보냈습니다. 그게 가능하니? 더 나은 조직을 위해서는 이것이 의미가 있습니까? – user2619631

+0

그렇게 할 수 있습니다. 작성이 끝나면,'ByteArrayOutputStream.toByteArray()'를 호출 해, DatagramPacket의 바이트 배열을 취득합니다. – EJP

관련 문제