notas de estudo java - programação de rede

1. Introdução à programação de rede

Programação de rede: sob o protocolo de comunicação de rede, a troca de dados pode ser realizada entre programas executados em computadores diferentes que realizam a interconexão de rede

1.1, três elementos de programação de rede

Endereço IP: Para que os computadores da rede se comuniquem entre si, cada computador deve receber um número de identificação, que é usado para especificar o computador para receber os dados e o computador para identificar o computador remetente, e o endereço IP é este número de identificação, também conhecido como endereço IP, é a
porta de identificação do dispositivo: a comunicação da rede é essencialmente a comunicação de duas aplicações. Cada computador tem muitos aplicativos, então como distinguir esses aplicativos na comunicação em rede? Se o endereço IP puder identificar exclusivamente o dispositivo na rede, o número da porta poderá identificar exclusivamente o aplicativo no dispositivo. Ou seja, o protocolo de identificação do aplicativo
: vários computadores podem ser conectados através de uma rede de computadores. Os computadores na mesma rede precisam obedecer a certas regras ao se conectar e se comunicar, assim como um carro de cor neutra na estrada. Basta seguir as regras de trânsito. Em uma rede de computadores, essas regras de conexão e comunicação são chamadas de protocolos de comunicação de rede, que fazem regulamentações uniformes sobre o formato de transmissão, taxa de transmissão e etapas de transmissão de dados, e ambas as partes devem cumpri-las para concluir a troca de dados. Os protocolos comuns são o protocolo UDP e o protocolo TCP.

1.2, endereço IP: é a identificação única do dispositivo na rede

Os endereços IP são divididos em duas categorias: IPv4
Comandos comuns do IPv6:
ipconfig: verifica o endereço IP local
ping endereço IP: verifica se a rede está conectada
Endereço IP especial:
127.0.0.1: é o endereço de loopback, que pode representar o endereço local, geralmente usado para testes

1.3, o uso de InetAddress

Para facilitar nossa aquisição e operação de endereços IP, Jaca fornece uma classe InetAddress para que possamos usar
InetAddress: Esta classe identifica o endereço IP (Internet Protocol)
estático InetAddress getByName(String host): Determina o endereço IP do nome do host. O nome do host pode ser um nome de máquina ou um endereço IP
String getHostName(): Obtém o nome do host deste endereço IP
String getHostAddress(): Retorna a string do endereço IP na exibição de texto

1.4, porta, protocolo

Porta: O número da porta de identificação exclusivo do aplicativo no dispositivo
: um número inteiro representado por dois bytes, seu intervalo de valores é 0-65535. O número da porta entre 0-1023 é usado para alguns serviços e aplicativos de rede conhecidos, aplicativos comuns precisa usar números de porta acima de 1024.
Protocolo: Em redes de computadores, as regras de conexão e comunicação são chamadas de protocolos de comunicação de rede.Protocolo
UDP: Protocolo de datagrama de usuário, é um protocolo de comunicação sem conexão. Devido ao baixo consumo de recursos e alta eficiência de comunicação utilizando o protocolo UDP, todos são normalmente utilizados para transmissão de áudio, vídeo e dados gerais. No entanto, não é recomendado usar o protocolo UDP Protocolo TCP ao transmitir dados importantes
: O Transmission Control Protocol é um protocolo de comunicação orientado à conexão, ou seja, antes de transmitir os dados, é estabelecida uma conexão lógica entre o remetente e o destinatário e, em seguida, os dados são transmitidos.Ele fornece duas transferências de dados confiáveis ​​e sem erros entre computadores. Na conexão TCP, é necessário esclarecer o cliente e o servidor, e o cliente envia uma solicitação de conexão ao servidor. A criação de cada conexão requer um handshake de três vias "
três vias": no protocolo TCP, na fase de preparação para o envio de dados, o cliente Três interações entre o cliente e o servidor para garantir a confiabilidade da conexão O
primeiro handshake, o cliente envia uma solicitação de conexão ao servidor, espera que o servidor confirme
o segundo handshake e o servidor envia uma resposta de volta ao cliente, notificando o cliente que recebeu o pedido de conexão
No terceiro handshake, o cliente envia novamente informações de confirmação ao servidor para confirmar que a conexão
completou o handshake de três vias. , o cliente e o servidor podem iniciar a transmissão de dados. Devido a esse recurso orientado à conexão, o protocolo TCP pode garantir a segurança dos dados transmitidos.

2. Programa de comunicação UDP

2.1, princípio de comunicação UDP

O protocolo UDP é um protocolo de rede não confiável. Ele estabelece um objeto Socket em ambas as extremidades da comunicação, mas esses dois Sockets são apenas objetos para envio e recebimento de dados. Portanto, não existe a chamada comunicação entre as duas partes com base no Protocolo UDP. O conceito de cliente e servidor
JAVA fornece a classe DaragramSocket como um Socket baseado em UDP
para enviar etapas de dados:
1. Criar um objeto Socket (DatagranmSocket) no lado do remetente
2. Criar dados e compactar os dados DategramPacket(byte[ ] buf,int length ,InetAddress address,int port)
3. Chame o método do objeto DatagramSocket para enviar os dados: void send(DatagramSocket p);
4. Feche o remetente: void close();
Passos para receber os dados:
1. Crie um objeto Socket (DaragramSocket) do receptor: DatagramSocket(int port)
2. Crie um pacote de dados para receber dados: DatagramPacket(byte[] buf, int length)
3. Chame o método do objeto DatagramSocket para receber dados: void receive(DatagramPacket p)
4. Analisa o pacote de dados e exibe os dados no console: byte[] getData(); int getLength();
5. Fecha a extremidade de recebimento

2.2, prática do programa de comunicação UDP

Dados de envio UDP: Os dados vêm da entrada do teclado, até que os dados de entrada sejam 886, os dados de envio terminam Dados
de recebimento UDP: Como o receptor não sabe quando o remetente para de enviar, ele adota um loop infinito para receber

package UDP;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

public class SendDemo {
    
    
	public static void main(String[] args) throws IOException {
    
    
		
		DatagramSocket ds = new DatagramSocket();
		
		System.out.println("输入:");
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String line;
		while((line = br.readLine()) != null) {
    
    
			if("886".equals(line)) {
    
    
				break;
			}
			
			byte[] bys = line.getBytes();
			DatagramPacket dp = new DatagramPacket(bys,bys.length,InetAddress.getByName("192.168.2.225"),12345);
			
			ds.send(dp);
		}
		
		ds.close();
		
	}
}
package UDP;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class ReveiveDemo {
    
    
	public static void main(String[] args) throws IOException {
    
    
		DatagramSocket ds = new DatagramSocket(12345);
		
		
		while(true) {
    
    
			
		
			byte[] bys=  new byte[1024];
			DatagramPacket dp = new DatagramPacket(bys,bys.length);
			
			ds.receive(dp);
			
			System.out.println("数据是:"+new String(dp.getData(),0,dp.getLength()));
			
			
		}
		
	}
}

3. Programa de comunicação TCP

3.1, princípio de comunicação TCP

O protocolo de comunicação TCP é um protocolo de rede confiável. Ele estabelece um objeto Socket em ambas as extremidades da comunicação, formando assim um link virtual de rede em ambas as extremidades da comunicação. Uma vez que o link de rede virtual é estabelecido, os programas em ambas as extremidades podem passar link virtual para comunicação.
Java fornece um bom encapsulamento para a rede baseado no protocolo TCP. Ele usa objetos Socket para representar as portas de comunicação em ambas as extremidades e gera fluxos de E/S através de Socket para comunicação de rede.
Java fornece a classe Socket para o cliente e a classe ServerSocket para o servidor para
enviar Etapas de dados:
1. Criar um objeto Socket do cliente (Socket): Socket(String host, int port)
2. Obter o fluxo de saída, escrever dados: OutputStream getOutputStream()
3. Liberar recursos: void close();
Etapas para receber dados:
1. Criar um objeto Socket do lado do servidor (ServerSocket): ServerSocket (int port)
2. Monitorar a conexão do cliente e retornar um objeto Socket: Socket accept();
3. Obter o fluxo de entrada, ler os dados , e exiba os dados no console :InputStream getInputStream()
4. Liberar recursos: void close();

3.2, caso TCP

package TCP;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClienDemo {
    
    
	public static void main(String[] args) throws UnknownHostException, IOException {
    
    
		
		//创建客户端的Socket对象
		Socket s = new Socket("192.168.2.225",10000);
		
		//获取输出流,写数据
		OutputStream os = s.getOutputStream();
		os.write("hello,我来了".getBytes());
		
		//接收服务器反馈
		InputStream is = s.getInputStream();
		byte[] bys = new byte[1024];
		int len = is.read(bys);
		String data = new String(bys,0,len);
		System.out.println("客户端:"+data);
		
		//释放资源
		s.close();
		
	}
}
package TCP;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerDemo {
    
    
	public static void main(String[] args) throws IOException {
    
    
		
		//创建服务器端的Socket对象
		ServerSocket ss = new ServerSocket(10000);
		
		//监听客户端连接,返回一个Socket对象
		Socket s = ss.accept();
		
		//获取输入流,读数据,并把数据显示在控制台
		InputStream is = s.getInputStream();
		byte[] bys = new byte[1024];
		int len = is.read(bys);
		String data = new String(bys,0,len);
		System.out.println("服务器:"+data);
		
		//给出反馈
		OutputStream os = s.getOutputStream();
		os.write("数据已经收到".getBytes());
		
		//释放资源
		ss.close();
	}
}

Acho que você gosta

Origin blog.csdn.net/weixin_45573296/article/details/123107569
Recomendado
Clasificación