문제

소켓 프로그래밍 (파이썬)을 배우고 있으며 데이터를 캡슐화하는 가장 좋은/일반적인 방법이 무엇인지 궁금하고 있습니까? 내 패킷은 수신 측에서 실행, 중지, 구성 등을 발행하는 데 사용됩니다. JSON을 사용하는 것이 도움이됩니까? 아니면 직선 텍스트 만 사용합니까?

도움이 되었습니까?

해결책

고정 된 또는 대부분 고정 된 형식을 사용하면 상황이 더 쉬워 지므로 고정 된 형식을 사용하는 것이 좋습니다.
그런 다음 표준 라이브러리와 같은 기능을 사용합니다. struct.struct, 팩 () 및 umpack () 메소드 또는 아마 건설하다, 당신은 당신을 위해 많은 구문 분석 작업을해야합니다 ;-)

다른 팁

처음부터 일반 텍스트를 제안합니다. 디버그하는 것이 더 쉽습니다. 텍스트가 취하는 형식은 당신이하고있는 일, 얼마나 많은 명령, 인수 등에 달려 있습니다. 당신의 명령이 어떻게 보이는지 알 수 있습니까? 일단 당신이 그것이 어떻게 생겼는지 알아 내면 그 자체로 형식을 제안 할 것입니다.

TCP 또는 UDP를 사용하고 있습니까? TCP는 스트림이기 때문에 쉽지만 UDP를 사용하는 경우 UDP 패킷의 최대 크기를 명심하고 메시지가 얼마나 큰지 명심하십시오.

학습 운동으로 무언가를 개발하고 있다면 구조화 된 텍스트 (예 : 인간 읽기 가능하고 인간의 쓰기 가능한) 형식을 사용하는 것이 가장 좋습니다.

예를 들어 명령 당 고정 된 수의 필드, 고정 너비 텍스트 필드 및/또는 쉽게 파싱 가능한 필드 구분 제고기를 사용하는 것입니다.

일반적으로 텍스트는 패킷 크기 측면에서 덜 효율적이지만 패킷 캡처 (예 : Wireshark 사용) 또는 Telnet을 사용하여 클라이언트를 모방하려는 경우 쉽게 읽을 수있는 이점이 있습니다.

그리고 이것이 학습 운동 일 뿐이라면 디버깅의 용이성이 중요한 문제입니다.

방법을 살펴보십시오 Scapy (멋진 파이썬 패킷 조작 라이브러리)가 그것을 구현합니다. a가있는 것 같습니다 소수의 필드.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top