Enviando dados usando o pedido HTTP GET para o servidor Ubuntu no TCP

0

Estou usando um modem industrial (Erco & amp; Gener) para enviar dados para uma página da Web do php hospedada em um servidor ubuntu. No lado do servidor Ubuntu, minha página da Web responde corretamente a uma solicitação http por meio do URL do seguinte formato:

http://xxx.xxx.xxx.xxx:80/testercogener.php?id=i&time=t

Quando eu verificar o banco de dados no servidor Ubuntu, na ferramenta de banco de dados mysql tudo parece ok, eu recebo minha nova linha.

No modem, conecto-me ao servidor usando um protocolo TCP na rede GPRS.

Meus dados enviados são da seguinte forma:

"GET /testercogener.php?id=%i&t=%t HTTP/1.1\r\nHost:xx.xxx.xxx.xxx\r\nConnection:close\r\n\r\n","H"

seguindo as recomendações da Erco & amp; Geração para a sintaxe (double \ para \ ). O host e a porta também são inseridos usando outra função no modem.

Este é o registro recebido na interface serial do Erco & amp; Gerador de modem:

00:12:29  open socket OK (5)
00:12:29  Gprs_Call_State : GPRS_CALL_TCP_CONNECTION_START
00:12:30  Gprs_Call_State : GPRS_CALL_TCP_CONNECTION_IN_PROGRESS
00:12:30  RECV_STATE_INIT from RECV_STATE_CLOSE
00:12:30  RECV_STATE_RECV from RECV_STATE_INIT
00:12:54  close connection
00:12:54  Gprs_Call_State : GPRS_CALL_TCP_DISCONNECT_START
00:12:54  b_close_session:0  b_reopen_socket:1  state_send:0 NO_ERR_SEND  state_recv:6 Operation now in progress (310)
00:12:54  Gprs_Call_State : GPRS_CALL_TCP_DISCONNECT_CLOSE_SESSION

Aqui está a minha pergunta: Como parece ser enviado corretamente (NO_ERR_SEND), existe uma maneira ou uma ferramenta no servidor Ubuntu para verificar se o socket foi corretamente aberto no lado do servidor Ubuntu e o que foi recebido em seu lado?

No XAMPP no windows eu tive uma ferramenta Netstat perfeita para verificar todos os soquetes abertos e fechados e um arquivo de log bonito adicional de cada GET ou POST, mas não tenho nada no Ubuntu.

Suponho que isso não seja um problema de controle de acesso, já que posso fazer a operação correta usando o URL em qualquer navegador da web de qualquer máquina.

    
por AtoM_84 21.02.2015 / 12:45

1 resposta

0

Veja o log de acesso em /var/log/apache2/access.log . O log de acesso lista não apenas o endereço IP, o registro de data e hora e a solicitação real, mas também o agente do usuário. Isso pode dar uma indicação de onde os pedidos estão vindo, se o endereço IP não o restringir o suficiente. Além disso, um erro 408 significa que o cliente iniciou uma conexão com o servidor, mas não enviou uma solicitação em um tempo razoável. É difícil dizer de onde as conexões com tempo limite se originam. Se o error.log não fornecer mais sugestões, você poderá executar um tcpdump no servidor para ver qual outro tráfego é executado entre o servidor e o cliente. Em qualquer caso, o servidor não nega a conexão. O sistema TCP permite o " handshake de três vias " do qual o servidor web é notificado, mas depois disso, nada acontece.

O cliente deve fechar a solicitação com uma linha vazia. Isso sinaliza ao servidor que a solicitação está completa e que o servidor pode começar a responder. O cabeçalho Connection: close sinaliza para o servidor que pode fechar a conexão (no nível TCP). Caso contrário, a conexão será apenas o tempo limite. O cabeçalho da conexão é opcional.

    
por Jos 22.02.2015 / 22:02