//Retorna o nome do host local e o endereço IP;
InetAddress i = InetAddress.getLocalHost();
i.getHostAddress();//IP
i.getAddress();//???
//Obter informações relacionadas ao computador através do nome do computador;
InetAddress i = InetAddress.getByName("Livingstone-PC");
//Obter informações relacionadas ao host através do nome de domínio
InetAddress ibaidu = InetAddress.getByName("www.baidu.com");
URL url = nova URL("http://localhost:8080/demo.html");
url.getHost();
Soquete (cliente):
Quando o objeto é estabelecido, você pode se conectar ao host especificado. Como o TCP é orientado à conexão, ao estabelecer o serviço de soquete, um servidor deve existir e a conexão for estabelecida com sucesso, a transmissão de dados é realizada no canal. ;
//Cria o serviço de soquete do cliente e especifica o host e a porta de destino;
Soquete s = novo Soquete("cj-PC", 10003);
// Para enviar dados, o fluxo de saída no fluxo de soquete deve ser obtido;
OutputStream out = s.getOutputStream();
//PrintWriter out = new PrintWriter(s.getOutputStream(),true);out.println("Olá");
out.write("olá".getBytes());
//Recebe a mensagem de resposta
InputStream in = s.getInputStream();
byte[] bufIn = novo byte[1024];
int num = in.read(bufIn);
System.out.println(new String(bufIn, 0, num));
s.close();//O objeto stream é encapsulado no soquete e fecha automaticamente o objeto stream;
ServerSocket (servidor):
Estabeleça o serviço de soquete do lado do servidor, ServerSocket, e escute uma porta;
Obtenha o objeto cliente conectado através do método de aceitação do objeto. Se não houver conexão, ele aguardará (bloqueio):
Se o cliente enviar dados, o servidor deverá usar o fluxo de leitura do objeto cliente correspondente para obter os dados enviados pelo cliente;
ServerSocket ss = novo ServerSocket(10003);
//ServerSocket(int port,int backlog é o número máximo de conexões);
Soquete s = ss.accept();
InputStream in = s.getInputStream();
byte[] buf = novo byte[2014];
int len = in.read(buf);
String rec = new String(buf, 0, len);
System.out.println(rec);
//envia mensagem de volta
OutputStream out = s.getOutputStream();
out.write("recebido".getBytes());
s.close();//O servidor fechará automaticamente o cliente;
(1)Cliente:
Estabeleça um serviço de soquete e especifique o host e a porta para conexão;
Obtenha o fluxo de saída no fluxo de soquete, grave os dados no fluxo e envie-os ao servidor através da rede;
Obtenha o fluxo de entrada no fluxo de soquete, obtenha os dados realimentados pelo servidor e feche os recursos do cliente;
DatagramSocket: envia um dado de texto por meio de transmissão UDP;
Enviar:
//Cria o serviço udp, cria um objeto DatagramSocket e informa o número do produto;
Soquete DatagramSocket = novo DatagramSocket(8888);
// Determina os dados e encapsula-os em um pacote de dados, DatagramPacket (o número da porta da máquina de destino precisa ser especificado);
byte[] buf = "udp estou indo".getBytes();
DatagramPacket dp = novo DatagramPacket(buf, buf.length,
InetAddress.getByName("Nome da Máquina"), 10086);
// enviar;
soquete.enviar(dp);
// fechamento;
soquete.close();
Receber:
//Define o serviço udpsocket. Normalmente é monitorada uma porta, que na verdade define um ID digital para a aplicação da rede receptora;
Soquete DatagramSocket = novo DatagramSocket(10086);
while (true) { //O objetivo é monitorar continuamente
byte[] buf = novo byte[1024];
//Definir pacote de dados para armazenar dados;
DatagramPacket dp = novo DatagramPacket(buf, buf.length);
// Armazena os dados recebidos no pacote de dados através do método de recebimento do serviço;
socket.receive(dp);//Método de bloqueio, preso aqui se não houver dados;
// Obtém os dados através do método de pacote de dados;
String ip = dp.getAddress().getHostAddress();
Dados da string = new String(dp.getData(), 0, dp.getLength());
porta int = dp.getPort();
}
Socket s = new Socket("Nome da Máquina", 10005);
OutputStream out = s.getOutputStream();
FileInputStream fis = new FileInputStream("awf.jpg");
byte[] buf = novo byte[1024];
int len=0;
enquanto ((len = fis.read(buf)) != -1) {
out.write(buf, 0, len);
}
//Para de enviar dados
s.shutdownOutput();
ServerSocket ss = new ServerSocket(10005); //ss.accept() método tem efeito de bloqueio;
// Uma thread separada pode ser criada para cada Socket obtido pelo método accept();