• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

pedrotuga

preciso de umas dicas sobre sockets

19 mensagens neste tópico

Decidi fazer um cliente minimalista de http que me permita total controlo dos cabeçalhos para que possa utilizar em todo o tipo de testes.

Não tenho muita experiencia de uso de sockets por isso decidi abrir este tópico.

Ora bem, para o caso de me estar a esquecer de alguma coisa...

O que tenho que fazer é pegar no meu pedido http, abrir um socket, meter para lá o pedido, fechar o socket e a resposta deve ser recohida praí de uma stream. Certo? Ou esqueci-me de alguma coisa?

Provavelmente vou fazer isto em java ou em python... ainda n decidi.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso não é bem assim se depois de enviares o socket o fechares então não consegues fazer a captura do stream :D lol.

Abres o socket, envias o pedido, recebes a resposta e fechas o socket é simples, mas linguagens com Java, D, Ruby tem libs já com o protocolo HTTP implementado em que apenas precisas de dizer a pagina e tipo de pedido, cookies, user-agente etc...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

essas bibliotecas não me servem

Eu quero fazer basicamente um utilitariozinho com uma chaixa de texto onde eu posso escrever o pedido manualmente e outra onde a resposta aparece.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Num socket podes enviar o que quiseres, logo basta abrires um socket, e um socket é composto por uma ligação entre dois pares de IP/Porto, escreveres para o socket, leres da ponta oposta e voilá, tens os teus dados.

Agora, no socket, escreves o que bem entenderes, tanto podes enviar comandos HTTP, isto é, texto correctamente formatado para corresponder ao protocolo, como enviar outro tipo de dados, o que interessa é que quem estiver a ler os dados consiga seguir o protocolo a usar.

Se estou a perceber o que queres fazer, então basta que o texto que escreves na caixa de texto seja enviado exactamente como está para o socket e daí para a outra ponta. Não sei se me consegui explicar... a ideia é que não é o socket que define o protocolo mas sim o texto que envias pelo socket.

Acho que confundi mais que expliquei :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que o knitter estava a tentar dizer acho eu é que o socket seja TCP ou UDP é algo genérico que se limite a enviar e receber dados para comunicares com o servidor HTTP tens de criar um dialogo que o servidor entenda ou seja escrever os texto do pedido seguindo as normas do protocolo HTTP.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pedrotuga, tens a noção que vais ter de implementar o protocolo todo no que vai fazer de servidor, certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pedrotuga, tens a noção que vais ter de implementar o protocolo todo no que vai fazer de servidor, certo?

O protocolo não é assim tão grande e é bastante simples, para o que ele pretende fazer, acho que nem dará muito trabalho.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não me interessa fazer um servidor.

so quero um aplicativo que sirva por exemplo para diagnosticar problemas em sites.

Mas aproveito e faço outra pergunta. O socket trata ele proprio de tudo ao nivel de transporte de dados certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim fazes send e receive e está a andar ele mando o que quiseres e recebe o que houver para receber :D

Já agora eu por acaso tenho usado sempre TCP para HTTP mas dá para usar UDP ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora eu por acaso tenho usado sempre TCP para HTTP mas dá para usar UDP ?

Essa pergunta tanto pode ser respondida com sim como com não :D

Repara que UDP não garante a chegada dos dados, a ordem de chegada, etc. O servidor HTTP a ser implementado sobre UDP teria de ter muitas validações e muito código para garantir que as páginas eram devolvidas em condições, o que pode não ser fácil, mas possível, sim é possível, embora deva ter pouco de útil :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que eu estava a perguntar era. Não tenho que andar a implementar o TCP manualmente pois n?

Tipo... o socket trata de dividir tudo por pacotes caso os dados sejam longos e escrever os cabeçalhos adequados, certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não, não tens de implementar nada de TCP/UDP, isso derrotava um pouco a ideia dos sockets :D :D

Basta iniciares um socket, na forma da linguagem que usares, e no momento em que tens um socket cliente e um socket servidor a comunicar podes enviar todo o tipo de dados, é apenas um túnel de comunicação, o que envias é à tua escolha mas não tens de preocupar com pormenores de nível inferior ao do socket, tudo o que estiver por baixo não é da tua responsabilidade.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, era tal qual como eu pensava, só me quis certificar. Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem pessoal, este projecto está em andamento, tudo sobre rodas e tal, agora estou numa situação um pouco caricata.

Chegou a altura em que o desenvolvimento envolve pequenos testes e não me dá muito jeito estar a escrever pedidos HTTP, pois são relativamente extensos.

Alguma outra sugestão para um protocolo qq mais simples que seja utilizado por aí e um servidor para o qual possa enviar uns pedidozitos para testar isto?

Decidi fazer isto em java, estava com as ganas de experimentar o netbeans 6 :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pá um protocolo simples e que tenha servidores de facil aceso online só mesmo http, podes é fazer request só pela HEARD ao invés do típico GET ou POST.

Eu tambem já ando para ir brincar com o NB6 à algum tempo, mais ainda não tive oportunidade :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

HEARD? fui um erro de dactilografia certo? querias dizer HEAD?

Pois... acho que vou mesmo experimentar com requests http, realmente n é de todo complicado...

Nao liguem, foi exagero de pergiça minha.

Amanha isto já deve estar funcional.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

LOL HEARD ai ai este estudo e trabalhos anda a dar cabo de mim ....

Era HEAD lol

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora