Resumen de programación de socket

Programación de enchufes / programación de redes / programación de enchufes

1. Descripción general
Socket se utiliza a menudo para la comunicación de datos entre varios servidores. En
esencia, los datos se resumen en un flujo de IO (flujo de bytes) para su transmisión en la red.
Ambos servidores deben utilizar la tecnología Socket. Y especificar la IP y la otra parte Número de puerto
2, herramientas
Inserte la descripción de la imagen aquí

  ServerSocket: el lado del servidor de la comunicación del socket-puede enviar datos al cliente o recibir datos del cliente
  Socket: el cliente de la comunicación del socket-envía datos al lado del servidor también puede recibir datos del servidor
3, ServerSocket
-este La clase implementa sockets de servidor. El socket del servidor espera a que la solicitud llegue a través de la red. Realiza ciertas operaciones basadas en la solicitud y luego puede devolver los resultados al solicitante.

Cree el objeto
  new ServerSocket (int port) para
 crear un socket de servidor vinculado a un puerto específico.
 int representa la dirección IP, puerto representa el número de puerto
Métodos comunes
1) Socket accept ()
   escucha y acepta la conexión a este socket
2) void close ()
   cierra este socket.
4. Socket
implementa sockets de cliente (también llamados "sockets"). Un socket es un punto final de comunicación entre dos máquinas.
Cree el objeto
new Socket (String host, int port) para
crear un socket de flujo y conéctelo al número de puerto especificado en el host especificado.
El método comúnmente utilizado
   InputStream getInputStream ()
   devuelve el flujo de entrada de este conector.
   OutputStream getOutputStream ()
   devuelve el flujo de salida de este socket.

5. Caso de entrada
-requisito: El servidor recibe el saludo del cliente y responde al cliente con un saludo.
- Prueba del lado del servidor:

			package cn.tedu.net;
			import java.io.IOException;
			import java.io.InputStream;
			import java.io.OutputStream;
			import java.net.ServerSocket;
			import java.net.Socket;

			//代表Socket通信的服务器端
			//职责:1,给客户端发送数据
			//	   2,接收客户单发来的数据
			public class Server {
				public static void main(String[] args) throws Exception {
					//1,启动服务器,并在8000端口处等待客户端的连接请求
					ServerSocket server = new ServerSocket(8000);
					System.out.println("服务器已启动!");
					//2,接收客户端发来的连接请求,并建立连接通道
					Socket socket = server.accept() ;
					System.out.println("有一个客户端发来了请求");
					//3,接收客户端发来的hello--in
					InputStream in = socket.getInputStream() ;
					//4,开始读取数据
					for (int i = 0; i < 5; i++) {
						int read = in.read();
						//按照字符读就行了,别转成int值
						char c = (char)read ;
						System.out.println(c);
					}
					
					//5,给客户端发出数据--out
					OutputStream out = socket.getOutputStream() ;
					out.write("world".getBytes());
			//		out.close();//把数据刷出去+关闭资源
					out.flush();//把数据刷出去
				}
			}

Prueba del lado del cliente:

			package cn.tedu.net;

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

			//代表Socket通信的客户端
			//职责:1,接收服务器发来的数据
			//     2,给服务器发送数据
			public class Client {
				public static void main(String[] args) throws Exception {
					//1,连接指定的服务器,并且建立通信通道
					//参数1--要连接的服务器的ip地址
					//参数2--要连接的服务器的端口号
					Socket socket = new Socket("127.0.0.1",8000);
					System.out.println("与服务器连接成功!");
					
					//2,给服务器发送hello--out
					OutputStream out = socket.getOutputStream() ;
					//3,开始写出数据
					out.write("hello".getBytes());//String->byte[]
			//		out.close();//把数据刷出去+关闭资源
					out.flush();//把数据刷出去
					
					//4,接收服务器发来的数据--in
					InputStream in = socket.getInputStream();
					for (int i = 0; i < 5; i++) {
						int read = in.read();
						//按照字符读就行了,别转成int值
						char c =  (char) read;
						System.out.println(c);
					}
					
			//		socket.close();
				}
			}

Supongo que te gusta

Origin blog.csdn.net/GTC_GZ/article/details/108760193
Recomendado
Clasificación