libnatpmp.

Uma tentativa de fazer uma implementação portátil e totalmente compatível do protocolo para o lado do cliente
Baixe Agora

libnatpmp. Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • BSD License
  • Preço:
  • FREE
  • Nome do editor:
  • Thomas Bernard
  • Site do editor:
  • http://miniupnp.free.fr/libnatpmp.html

libnatpmp. Tag


libnatpmp. Descrição

Uma tentativa de fazer uma implementação portátil e totalmente compatível do protocolo para o lado do cliente O LibnatPMP é uma tentativa de fazer uma implementação portátil e totalmente compatível do protocolo para o lado do cliente. É baseado em soquetes não bloqueadores e todas as chamadas da API são assíncronas. Libnatpmp Library é, portanto, muito fácil de integrar o código NAT-PMP a qualquer código acionado por evento. Nat-PMP é o concorrente direto para a especificação do UPnP IGD. Está proporcionando uma maneira de fazer travessia NAT. Faz parte das especificações do protocolo Bonjour. Você pode obter a descrição deste simples protocolo aqui ou lendo o rascunho. No momento, é suportado principalmente pelo Apple Software e Hardware.Use libnatpmp em seus programas, deve ser muito fácil de usar o libnatpmp em qualquer programa C / C ++. Toda a API é descrita no arquivo NATPMP.H. · Primeiro de tudo, uma variável de tipo NATPMP_T deve ser alocada e initnatpmp () deve ser chamada. · SendPublicAddressRequest () ou sendnewportmappingRequest () pode ser chamado. · Para cada solicitação enviada, readnatpmpresponseorretry () deve ser chamado enquanto retornar Natpmp_pertagain. · Se você estiver esperando pelo soquete (o campo S no objeto NATPMP_T) estar pronto para ler usando chamadas do sistema, como SELECT () ou enquete (), você pode usar getnatpmprequesttimeout () para saber quanto tempo esperar Antes de ligar para readnatpmpresponespontry () de qualquer maneira. · Para libertar todos os recursos usados, o closenatpmp () pode ser chamado.Sample CódigoError Verificação de CódigoError de Hsample foi deliberadamente omitida. Por favor, verifique todos os códigos de retorno no arquivo natpmp.h. Samplethis simples amostra muito simples basta pedir um redirecionamento e retornar quando o trabalho é feito. anular redirecionamento (uint16_t privateport, uint16_t publs publport) {int r; natpmp_t natpmp; RESPOSTA NATPMPRESP_T; initnatpmp (NATPMP); sendnewportmappingrequest (natpmp, natpmp_protocol_tcp, privateport, publsport, 3600); Faça {FD_SET FDS; Estruture tempo limite timeval; Fd_zero (FDS); Fd_set (NATPMP.S, FDS); getnatpmprequesttimeout (NATPMP, tempo limite); Selecione (FD_SETSIZE, FDS, NULL, NULL, TIMEOUT); r = readnatpmpresesOretretretria (NATPMP, resposta); } enquanto (r == natpmp_tryAgain); Printf ("Maphed Public Port% Hu para localport% Hu Liftime% un", resposta.NewportMapping.MappedPublicport, resposta.NewportMapping.Privateport, response.NewportMapping.lifetime); closenatpmp (NATPMP); } Como foi deliberadamente omitido. Por favor, verifique todos os códigos de retorno no arquivo natpmp.h Samplethis amostra muito simples basta pedir um redirecionamento e retornar quando o trabalho é feito. anular redirecionamento (uint16_t privateport, uint16_t publs publport) {int r; natpmp_t natpmp; RESPOSTA NATPMPRESP_T; initnatpmp (NATPMP); sendnewportmappingrequest (natpmp, natpmp_protocol_tcp, privateport, publsport, 3600); Faça {FD_SET FDS; Estruture tempo limite timeval; Fd_zero (FDS); Fd_set (NATPMP.S, FDS); getnatpmprequesttimeout (NATPMP, tempo limite); Selecione (FD_SETSIZE, FDS, NULL, NULL, TIMEOUT); r = readnatpmpresesOretretretria (NATPMP, resposta); } enquanto (r == natpmp_tryAgain); Printf ("Maphed Public Port% Hu para localport% Hu Liftime% un", resposta.NewportMapping.MappedPublicport, resposta.NewportMapping.Privateport, response.NewportMapping.lifetime); closenatpmp (NATPMP); } A amostra mais complexa poderia imaginar a fase inicial de um software P2P. Durante esta fase, o software tenta obter o endereço IP público e adicionar um mapeamento de porta. No final do processo, o NATPMPState será Sdone ou Serror. {natpmp_t natpmp; RESPOSTA NATPMPRESP_T; enum {sinit = 0, ssendpub, srecvpub, ssendmap, srecvmap, sdone, serror = 1000} NATPMPState = sinit; int r; se (initnatpmp (natpmp)


libnatpmp. Software Relacionado