Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vitor Braga

[Resolvido] Sockets e HTTP

Recommended Posts

Olá pessoal,

 

estou desenvolvendo um aplicativo que basicamente se conecta com um servidor remoto e troca informações entre cliente e servidor utilizando sockets em Java.

 

Estou tendo muitas dúvidas quanto à implementação deste aplicativo. Aí vai a principal:

 

- Já consigo enviar dados para o servidor via protocolo HTTP. Agora, como receber uma resposta do servidor, para diferentes sockets? O que devo fazer?

 

PS.: estou usando o método GET.

 

Agradeço desde já!

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

- Já consigo enviar dados para o servidor via protocolo HTTP. Agora, como receber uma resposta do servidor, para diferentes sockets? O que devo fazer?

 

Estamos falando de Sockets ou de WebSockets ? ...

Um exemplo que fiz ( Sockets ) , recebendo o valor retornado pelo servidor ( Java ) .. com Node.JS

 

Servidor -

package application;

import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;


public class Application {

      public static void main ( String [ ] args ) throws IOException {

             ServerSocket socket = new ServerSocket ( 8080 ) ;
             while ( true ) {
                    Socket client = socket.accept ( ) ; 

                    ObjectOutputStream stream = new ObjectOutputStream ( client.getOutputStream ( ) ) ;       

                    // Escreve um objeto na stream, no caso String.
                    stream.writeObject ( "Hello World !" ) ;

                    stream.close ( ) ;
                    client.close ( ) ;
             }
      }



}

 

 

Cliente

var net = require ( 'net' ) ;

net.connect ( 8080 , function ( ) { 
      this.on ( 'data' , function ( $_ ) {
             console.log ( new Buffer ( $_ ).toString ( ) ) ;
             this.end ( ) ;
      } ) ;

      this.on ( 'end' , function ( ) {
             console.log ( 'Disconnected from the server ..' ) ;
      } ) ;
} ) ;

 

Iniciei o Daemon .. e depois executei o código JS

C:\NodeJS>node Socket
Hello World !
Disconnected from the server ..

 

Agora, se você quer receber uma resposta para vários outros sockets ..

Socket.js

var net = require ( 'net' ) ;

net.connect ( 8080 , function ( ) { 
      this.on ( 'data' , function ( $_ ) {
             console.log ( new Buffer ( $_ ).toString ( ) ) ;
             net.connect ( 8090 , function ( ) {
                    // Comunica outro socket
                    this.on ( 'data' , function ( $_ ) {
                           console.log ( new Buffer ( $_ ).toString ( ) ) ;
                    } ) ;

                    this.write ( ':)' ) ;
             } ) ;
             this.end ( ) ;
      } ) ;

      this.on ( 'end' , function ( ) {
             console.log ( 'Disconnected from the server ..' ) ;
      } ) ;
} ) ;

 

ServerSocket.js

var net = require ( 'net' ) ;

var sock = net.createServer ( function ( stream ) { 
      stream.on ( 'data' , function ( $_ ) { 
             console.log ( $_.toString ( ) ) ;
      } ) ;

      stream.write ( 'Hello .. Other Socket !' ) ;
} ).listen ( 8090 ) ; 

 

Iniciei o daemon do ServerSocket.js, e executei novamente o Socket.js, saída

Hello World !
Disconnected from the server ..
Hello .. Other Socket !

 

Saída no daemon do ServerSocket.js

:)

 

Ou seja, conectei com o outro socket, e escrevi de volta.

C:\NodeJS>nc -vv localhost 8080 & nc -vv localhost 8090
Andrey [127.0.0.1] 8080 (?) open
Hello World !sent 0, rcvd 20: NOTSOCK
Andrey [127.0.0.1] 8090 (?) open
Hello .. Other Socket !
^C

^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me desculpe a demora pela resposta!

Mas já consegui resolver o problema.

Estáva com dúvida na elaboração da resposta HTTP.

Mas depois de ler muitas documentações e tutoriais descobri que o conteúdo da mensagem é colocado após uma linha em branco aos cabeçalhos do protocolo.

Daí usei socket para mandar as requisições e pegar as respostas, por meio de um servidor java.

 

Agradeço infinitamente ao Andrey Knupp...seu codigo ajudou muito a encontrar e pensar na resposta!

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.