2010-07-13 1 views
1

에서 원시 진수 데이터를 전송합니다. 자이 썬을 입력하십시오.내가 자바 경험 해요,하지만 난 동료 파이썬 코드로 자바 라이브러리를 통합해야 자이 썬 UDP 패킷

매우 구체적인 데이터 섹션을 가진 UDP 패킷을 보내려고합니다. 우리는 다음 패킷을 구축 바이트 배열

을 설명 BYTEARRAY는 16 진수의 문자열에 소요 가정 쉽게 들어

version = 0x0001 
referenceNumber = 0x2323 
bookID = byteArray('df82818293819dbafde818ef') 

및 반환 :

우리는과 같이 패킷을 구축하고있다

packet = hex(version) 
packet += hex(referenceNumber) 
packet += bookID 

소켓을 발송.

나는이, 데이터 유형이 맞지 않을 수 잘못 알고, 그래서 CONCAT 늘 옳은 일을. 어떻게이 패킷을 제대로 구축 할 수 있습니까? 파이썬 문서는 s.sendTo()가 문자열을 취한다고 말합니다. 바이트 배열을 사용하는 s.sendTo()에 대한 대안이 필요하다고 생각합니다.

00 01 23 23 df 82 81 82 93 81 9d ba fd e8 18 ef 

파이썬에서이 작업을 수행하는 적절한 방법은 무엇입니까 :

우리는 패킷이 UDP 데이터 섹션처럼 보이는하여 서버에 도착하려면? 우리는 패킷을 확인하기 위해 와이어 샤크를 사용하는

제대로하고 지금 파이썬은 아스키 표현으로 각 필드를 변환하는 것처럼 UDP 데이터 섹션 보이는 도착한다. 예를 들어, referenceNumber 필드는 리터럴 문자열 '0x2323'에 대한 ascii 값과 같습니다. s.sendTo()가 문자열을 사용하기 때문에 어떤 의미가 있습니다.

==================== 솔루션 ========================= =====

아, 그래, 그것을 않는 ... 내가 파이썬에 얼마나 새로운 보여줍니다.

version = '0001' 
referenceNumber = '2323' 

packet = a2b_hex(version) 
packet += a2b_hex(referenceNumber) 

.. etc 

binascii 모듈 그럼 그냥

s.send(packet) 

답변

1

체크 아웃 : 호기심를 들어, 다음은 코드입니다.