Pergunta

Estou aprendendo programação de socket (em python) e eu queria saber qual a melhor maneira / típicos de encapsular dados é? Meus pacotes serão utilizados para emissão run, stop, configure, etc. comandos no lado receptor. É útil usar JSON ou apenas texto em linha reta?

Foi útil?

Solução

Eu sugiro que você use um fixo, ou quase formato fixo, como este fazem as coisas mais fáceis.
Até então usando recursos como da biblioteca padrão struct.Struct , com o seu pack () e umpack () métodos, ou possivelmente um pacakges um pouco mais de destaque, tais como Construção , você deve ter muito do trabalho de análise feito para você; -)

Outras dicas

Eu sugiro texto simples para começar - é mais fácil de depurar. O formato que o seu texto leva depende do que você está fazendo, quantas comandos, argumentos, etc. Você já concretizados como seus comandos vão olhar? Uma vez que você descobrir o que que parece que provavelmente vai sugerir um formato de tudo por conta própria.

Você está usando TCP ou UDP? TCP é fácil uma vez que é um fluxo, mas se você estiver usando UDP Tenha em mente o tamanho máximo de pacotes UDP e, assim, quão grande a sua mensagem pode ser.

Se você está desenvolvendo algo como um exercício de aprendizagem que você pode achar que é melhor ir com um texto estruturado (ie. Gravável legível e humano humano) formato.

Um exemplo seria a utilização de um número fixo de campos por comando, largura fixa campos de texto e / ou facilmente delimitadores de campo parsable.

Geralmente texto é menos eficiente em termos de tamanho do pacote, mas tem os benefícios que você pode lê-lo facilmente se você fizer uma captura de pacotes (eg. Utilizando Wireshark) ou se você quiser usar telnet para o cliente um mímico.

E se este é apenas um exercício de aprendizagem, em seguida, facilidade de depuração é uma questão importante.

Dê uma olhada em como scapy (um Python biblioteca incrível manipulação de pacotes) implementa. Looks assim ter um punhado de campos .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top