Directorio de artículos
Sugerencia: El siguiente es el contenido de este artículo, los siguientes casos son para referencia
1. ¿Qué es la programación de redes TCP?
La programación de red TCP se refiere al uso de la clase Socket para escribir programas de comunicación.
Los programas que utilizan el protocolo TCP para comunicarse son primarios y secundarios, uno se llama programa del lado del servidor y el otro programa del lado del cliente .
2. Principios de la programación de redes TCP:
1. Icono:
2. Análisis del lado del cliente y del lado del servidor:
La esencia de Socket es abstraer datos en flujos de E / S y transmitir
sockets de datos entre redes : el punto final de la comunicación entre dos máquinas
Lado del servidor : puede escribir datos al cliente, leer los datos enviados por el
cliente cliente : puede leer los datos enviados por el servidor, escribir datos al servidor
Herramientas utilizadas:
Lado del servidor: ServerSocket
Crear objeto : ServerSocket (puerto int)
Este método crea un socket de servidor vinculado a un puerto específico. El
puerto de parámetro es el número de puerto , que usted define, dividido por 0 ~ 1024 y el software instalado está ocupado por defecto Número de puerto diferente
al método de llamada del número de puerto: Socket (tipo de valor de retorno) accept ()
Este método escucha y recibe la conexión de este socket
Cliente:
Objeto de creación de socket : Socket (String host, int port) El
parámetro host es la dirección IP y el puerto es el número de puerto.
Este método crea un socket de flujo y lo conecta al número de puerto en el host especificado.
Método de llamada : Clase InputStream El método getInputStream ()
Este método puede devolver el flujo de entrada de este conector
El método getOutputStream () en
la clase OutputStream Este método puede devolver el flujo de salida de este conector
3. Cómo usar la ventana de DOS para verificar su propia dirección IP:
①Abre la ventana del administrador de cmd
Presione la tecla win + r para iniciar rápidamente la ventana de comandos, ingrese cmd para abrir la interfaz de administrador
②Introduzca el comando para ver la dirección IP
Ingrese el comando ipconfig para obtener la información de la dirección de la máquina, e IPv4 es la dirección IP de la máquina.
3. Prueba de caso de comunicación de red:
1. Clase del lado del servidor:
package dreamfly.net.server;
//读取客户端发来的数据,给客户端写出数据
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
//1.开启服务器,参数是指开着的端口号
ServerSocket server = new ServerSocket(8899);
System.out.println("服务器已成功启动");
//2.接收客户端发来的连接
Socket socket = server.accept();
System.out.println("接收到客户端发来的请求");
//3.获取读取流
InputStream in = socket.getInputStream();
//4.读取数据
// int data = in.read(); //默认返回的是整数
for (int i = 0;i < 5;i++){
char data = (char)in.read();
System.out.print(data);
}
//5.给客户端写出数据
System.out.println();
OutputStream out = socket.getOutputStream();
out.write("world".getBytes());
System.out.println("服务器端成功发送数据");
out.close();
}
}
Para ejecutar cuando se lanza por primera vez al método IOException o usar el bloque de declaración try / catch, puede ocurrir una excepción de declaración rodeada , donde elegí el primer lanzamiento IOException, seguido de declaraciones de salida en la clase del lado del servidor para detectar si el envío es exitoso . la declaración de salida no se ejecuta, significa que los datos no se han enviado correctamente.
2. Clase de cliente:
package dreamfly.net.client;
//读取服务器端发来的数据,给服务器端写出数据
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws IOException {
//1.连接到指定的服务器(ip+port)
Socket socket = new Socket("127.0.0.1",8899);
System.out.println("已连接成功");
//2.获取写出流
OutputStream out = socket.getOutputStream();
//3.写出数据,字节流只能写出整数或字节数组
//将hello对应整数编程对应的字节数组,getBytes()将String转换为byte[]
out.write("hello".getBytes());
System.out.println("客户端成功发送数据");
InputStream in = socket.getInputStream();
for (int i = 0;i < 5;i++){
char data = (char)in.read();
System.out.print(data);
}
System.out.println();
System.out.println("成功接收服务器端数据");
out.close();
}
}
4. Resultados de la operación:
1. Encienda el servidor
2. Abra el cliente
Resultados de ejecución del lado del servidor:
Resultados de ejecución del cliente:
3. Asuntos que requieren atención:
El orden de operación es: primero abra el servidor y luego ejecute el cliente. El
flujo de bytes de OutStream solo puede escribir números enteros o matrices de bytes . Para transmitir datos de cadena, use el método getBytes () para convertir datos de cadena en bytes [] matriz de bytes
Si el cliente se enciende sin el servidor encendido, se producirán los siguientes resultados operativos:
Motivo: debido a que el número de puerto del servidor no está abierto, el cliente no puede conectarse al puerto correspondiente del servidor.
Cinco, resumen
Lo anterior es el contenido de la comunicación de red simple en Java, y se adjunta la descripción de las clases utilizadas en este artículo en la API.