Resumen de programación del lado del servidor JAVA

Programación JAVA del lado del servidor (TCP)

La programación en red es el intercambio de datos entre dos o más dispositivos. De hecho, más específicamente, la programación en red es el intercambio de datos entre dos o más programas. En comparación con los programas independientes ordinarios, la mayor diferencia entre los programas de red es Los programas que necesitan intercambiar datos se ejecutan en diferentes computadoras, lo que causa la complejidad del intercambio de datos. Aunque puede encontrar un programa que se ejecuta en la red por dirección IP y puerto, si necesita programar la red, también debe comprender el proceso de comunicación de la red.

La programación de red se divide en modo de servidor cliente (C / S) y modo de servidor de navegador (B / S), y los protocolos seguidos por la programación de red se dividen en: TCP y UDP. De hecho, la programación de red no es difícil. La idea básica es que el cliente y el servidor primero deben establecer una conexión, luego el cliente y el servidor intercambian datos, y finalmente el cliente y el servidor se desconectan para liberar recursos. La programación en red es el intercambio de datos entre dos o más dispositivos. De hecho, más específicamente, la programación en red es el intercambio de datos entre dos o más programas. En comparación con los programas independientes ordinarios, la mayor diferencia entre los programas de red es Los programas que necesitan intercambiar datos se ejecutan en diferentes computadoras, lo que causa la complejidad del intercambio de datos. Aunque puede encontrar un programa que se ejecuta en la red por dirección IP y puerto, si necesita programar la red, también debe comprender el proceso de comunicación de la red.

La programación de red se divide en modo de servidor cliente (C / S) y modo de servidor de navegador (B / S), y los protocolos seguidos por la programación de red se dividen en: TCP y UDP. La idea básica es que primero el cliente y el servidor deben establecer una conexión, luego el cliente y el servidor intercambian datos, y finalmente el cliente y el servidor se desconectan para liberar recursos.

Programación simple del lado del servidor

El lado del servidor espera la conexión del cliente, luego acepta la solicitud del cliente, analiza lógicamente los datos solicitados y luego retroalimenta el resultado analizado al cliente. Los pasos de implementación específicos son los siguientes:

(1) Cree un objeto ServerSocket, escuche un puerto específico y espere la conexión del cliente
ServerSocket serverSocket = new ServerSocket (puerto);
Socket socket2 = serverSocke.accept ();
Cree un flujo de entrada y salida de acuerdo con la conexión creada
OutputStream os = socket2.getOutputStream () ; // Obtener el flujo de salida
InputStream is = socket2.getInputStream (); // Obtener el flujo de entrada
(2) Recibir el contenido enviado por el cliente
byte [] b = new byte [1024];
int n = is.read (b);
String quite = new String (b, 0, n);
(3) Devuelve el resultado del procesamiento al cliente
os.write (result.getBytes ());
(4) Cierre la secuencia y conecte
os.close ();
is. close ();
socket2.close ();
serverSocket.close ();
ejemplo de código del lado del servidor:
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class SimpleSocketServer {
public static void main (String [] args) {
// TODO Método de generación automática stub
ServerSocket serverSocket = null;
Socket socket2 = null;
OutputStream os = null;
InputStream is = null;
int port = 10000;
try {
// Establecer conexión
serverSocket = new ServerSocket (puerto);
// Obtener conexión
socket2 = serverSocket.accept ();
// Aceptar contenido enviado por el cliente
es = socket2.getInputStream ();
byte [] b = nuevo byte [1024] ;
int n = is.read (b); // Sistema de salida.out.println (
"El contenido enviado por el cliente es:" + cadena nueva (b, 0, n)); // Enviar contenido de comentarios al cliente
os = socket2.getOutputStream ();
os.write (b, 0, n);
} catch (Excepción e) {
e.printStackTrace ();
} finalmente {
probar {// Cerrar la secuencia y vincular
os.close ();
is.close ();
socket2.close ();
serverSocket.close ();
} catch (Exception e) {
e.printStackTrace ():
}
}
}
}

Cómo establecer una conexión de socket

¿Cómo establecer una conexión y realizar múltiples intercambios de datos? De hecho, es muy simple: una vez establecida la conexión, la lógica del intercambio de datos puede escribirse en un bucle. Por lo tanto, mientras el ciclo no termine, la conexión no se cerrará. De acuerdo con esta idea, el código anterior se puede modificar para permitir que el programa envíe datos tres veces después de establecer una conexión una vez, por supuesto, el número de veces aquí también puede ser varias veces. El código de muestra es el siguiente:
import java.io.InputStream;
import java. io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

clase pública SimpleSocketServer {

     public static void main(String[] args) {
      // TODO Auto-generated method stub 
      ServerSocket serverSocket=null; 
      Socket socket2=null; OutputStream os=null;
       InputStream is=null; 
       int port=10000;
        try{ 
        // 建立连接 
        serverSocket=new ServerSocket(port);
         // 获得连接 
         socket2=serverSocket.accept(); 
         // 接受客户端发送的内容 
         is=socket2.getInputStream();
          os=socket2.getOutputStream();
           byte[] b=new byte[1024];
            for(int i=0;i<3;i++){ int n=is.read(b);
             // 输出 
                  System.out.println("客户端发送内容为:"+new String(b,0,n));
                   // 向客户端发送回馈内容 
                   os.write(b,0,n);
                    }
             }catch(Exception e){
                      e.printStackTrace();
              }finally { try{
               // 关闭流和链接
                os.close();
                 is.close();
                  socket2.close();
                   serverSocket.close();
    }catch(Exception e){
          e.printStackTrace();
           }
      }
   }

}

Publicado 9 artículos originales · recibido 0 · vistas 927

Supongo que te gusta

Origin blog.csdn.net/weixin_46146588/article/details/105088185
Recomendado
Clasificación