2012-02-14 2 views
4

주기적으로 작은 패킷을 보내는 상관없는 장치 (최대 10000 개)의 패킷을 기다리는 UDP 서버를 작성해야합니다. 페이로드로 일부 처리를 수행하고 결과를 SQL에 작성하십시오. 이제 jdbc를 통해 SQL 부분을 끝내었지만 페이로드 바이트가 계속 나를 괴롭 히며 어떻게 액세스해야합니까? 지금까지 문자열에 매핑 된 페이로드로 작업 한 다음 문자열을 16 진수로 변환했습니다 (한 바이트를 나타내는 두 개의 16 진수 문자). 나는 이것을하는 더 좋은 방법이 있다는 것을 알고 있지만 나는 그것을 모른다. ...소켓에서 알 수없는 길이의 패킷을 기다리는 방법에 대한 제안 사항과 페이로드 바이트를 가능한 효율적으로 처리하는 방법에 대한 제안 사항은 무엇입니까?

+0

왜 바이트를 바이트로 저장하지 않습니까? 예 : BLOB를 사용하여 –

+0

DatagramPacket의 Blob을 데이터베이스의 Blob으로 저장하지 마십시오. – Kris

답변

2

DatagramSocket을 만들고 그것에 DatagramPacket을 받고 싶지 않니?

당신은 당신이 그것을 만드는 데 사용하는 버퍼의 미덕에 의해 패킷의 최대 길이를 지정해야하지만 당신은 실제로getLength()를 사용하여 패킷 전송 데이터의 양이 얼마나 찾을 수 있습니다.

자세한 내용과 예는 Java Tutorial을 참조하십시오.

+1

길이가 1400 인 바이트 배열을 사용하고이를 'DatagramPacket'에 사용하지만 패킷 내용을 인쇄 할 때 패딩 된 패킷을 표시합니다 (수신 된 데이터 다음에 0이 붙습니다). – V4R15

+0

@ V4R15 : 실제로 관심을 가져야하는 데이터의 양을 알려주는 getLength()를 무시하는 것처럼 들립니다. –

관련 문제