Quando queremos nos conectar a um servidor pela rede usando TCP/IP em Java, precisamos criar um objeto java.net.Socket e conectar-nos ao servidor. Se quiser usar Java NIO, você também pode criar um objeto SocketChannel em Java NIO.
Criar soquete
O código de exemplo a seguir está conectado à porta 80 no servidor com o endereço IP 78.64.84.171. Este servidor é nosso servidor Web (www.VeVB.COm) e a porta 80 é a porta do serviço Web.
Copie o código do código da seguinte forma:
Soquete soquete = novo Soquete("78.46.84.171", 80);
Também podemos usar nomes de domínio em vez de endereços IP, como no exemplo a seguir:
Copie o código do código da seguinte forma:
Soquete soquete = new Soquete("VeVB.COm", 80);
Socket envia dados
Para enviar dados através do Socket, precisamos obter o fluxo de saída do Socket (OutputStream). O código de exemplo é o seguinte:
Copie o código do código da seguinte forma:
Soquete soquete = new Soquete("VeVB.COm", 80);
SaídaStream out = socket.getOutputStream();
out.write("alguns dados".getBytes());
fora.flush();
out.close();
soquete.close();
O código é muito simples, mas se você deseja enviar dados ao servidor pela rede, não se esqueça de chamar o método flush(). A implementação TCP/IP subjacente do sistema operacional primeiro colocará os dados em um bloco de cache de dados maior, e o tamanho do bloco de cache será adaptado ao tamanho do pacote TCP/IP. (Nota do tradutor: chamar o método flush() apenas grava dados no cache do sistema operacional e não garante que os dados serão enviados imediatamente)
Soquete lê dados
Para ler dados do Socket, precisamos obter o fluxo de entrada do Socket (InputStream).
Copie o código do código da seguinte forma:
Soquete soquete = new Soquete("VeVB.COm", 80);
InputStream in = socket.getInputStream();
dados int = in.read();
//... leia mais dados...
in.close();
soquete.close();
O código não é complicado, mas deve-se observar que a leitura de dados do fluxo de entrada do Socket não lê o arquivo. O método read() é chamado até que -1 seja retornado, pois para o Socket, somente quando o servidor When. a conexão for fechada, o fluxo de entrada do Socket retornará -1, mas na verdade o servidor não continua fechando a conexão. Suponha que queiramos enviar várias solicitações em uma única conexão; nesse caso, fechar a conexão seria uma tolice.
Portanto, ao ler dados do fluxo de entrada do Socket, devemos saber o número de bytes a serem lidos. Isso pode ser conseguido deixando o servidor informar aos dados quantos bytes foram enviados ou definindo caracteres especiais no final dos dados. O método de marcação é implementado.
Fechar soquete
Após usar o Socket, devemos fechá-lo e desconectar do servidor. Para fechar um Socket, você só precisa chamar o método Socket.close().
Copie o código do código da seguinte forma:
Soquete soquete = new Soquete("VeVB.COm", 80);
soquete.close();
(O texto completo termina)