Red de conocimiento del abogados - Preguntas y respuestas sobre la Ley de patentes - ¿Cómo utilizar el socket Java para la transferencia de archivos? ¿Alguien puede dar un ejemplo sencillo, incluidos el remitente y el destinatario?

¿Cómo utilizar el socket Java para la transferencia de archivos? ¿Alguien puede dar un ejemplo sencillo, incluidos el remitente y el destinatario?

El método de transmisión de información de red en Java se basa en el protocolo TCP o el protocolo UD P, y el socket se basa en el protocolo TCP

Ejemplo 1

(1) Programa de terminal de cliente:

importar java.io.*;

importar java.net.*;

Cliente de clase pública

{ public static void main(String args[])

{ String s=null;

Socket mysocket;

DataInputStream in=null;

DataOutputStream out=null;

prueba{

mysocket=new Socket("localhost",4331);

in=new DataInputStream(mysocket.getInputStream ( ));

out=new DataOutputStream(mysocket.getOutputStream());

out.writeUTF("Hello!");//Escribe en la "línea" toda la información .

while(true)

{

s=in.readUTF();//Leer la información puesta en la "línea" por el servidor usando en . Estado bloqueado,

//A menos que se lea la información.

out.writeUTF(":"+Math.random());

System.out.println("El cliente recibió:"+s);

Thread.sleep(500);

}

}

catch(IOException e)

{ System.out.println ( "No se puede conectar");

}

catch(InterruptedException e){}

}

}

(2) Programa del lado del servidor:

importar java.io.*;importar java.net.*;

Servidor de clase pública

{ público static void main(String args[])

{ ServerSocket server=null;

Socket you=null;String s=null;

DataOutputStream out=null ; DataInputStream in=null;

try{ server=new ServerSocket(4331);}

catch(IOException e1){System.out.println("ERRO:"+e1) ; }

intentar{ you=server.accept();

in=new DataInputStream(you.getInputStream());

out=new DataOutputStream( you .getOutputStream());

while(true)

{

s=in.readUTF();// Leer la entrada del cliente usando in Información en "Línea". Estado bloqueado,

//A menos que se lea la información.

out.writeUTF("Hola: soy el servidor");//Escribe información en la "línea" hasta el final.

out.writeUTF("El número que mencionaste es :"+s);

System.out.println("Servidor recibido:"+s);

Thread.sleep(500);

}

}

catch(IOException e)

{ System.out.println(""+e);

}< / p>

catch(InterruptedException e){}

}

}

Ejemplo (2)

(1) Cliente

importar java.net.*;importar java.io.*;

importar java.awt.*;importar java.awt.event.*;

importar java.applet.*;

la clase pública Computer_client extiende Applet implementa Runnable,ActionListener

{ Cálculo del botón; TextField ingresa el cuadro de texto de tres lados, cuadro de texto del resultado del cálculo <; /p>

Socket socket=null;

DataInputStream in=null; DataOutputStream out=null;

Hilo de rosca

public void init()

{ setLayout(new GridLayout(2,2));

Panel p1=nuevo Panel(),p2=nuevo Panel()

Cálculo = new Button("Calcular");

Ingrese la longitud de tres lados text box=new TextField(12); resultado del cálculo text box=new TextField(12);

p1. add (new Label("Ingrese la longitud de los tres lados del triángulo, separados por comas o espacios:"));

p1.add(Ingrese la longitud de los tres lados en el cuadro de texto);

p2. add(new Label("Resultado del cálculo:"));p2.add(cuadro de texto del resultado del cálculo);p2.add(cálculo);

Calculation.addActionListener(this );

add(p1);add(p2);

}

public void start()

{ intentar

{ // Establece una conexión de socket con el servidor donde reside el subprograma:

socket = new Socket(this.getCodeBase().getHost(), 4331); p> in = nuevo DataInputStream (socket.getInputStream());

salida = nuevo DataO

utputStream(socket.getOutputStream());

}

catch (IOException e){}

if(thread == null)

{ thread = new Thread(this);

thread.start();

}

}

ejecución pública vacía ()

{ String s=null;

while(true)

{ try{ s=in.readUTF();// Estado de bloqueo a menos que Información se lee.

Cuadro de texto del resultado del cálculo.setText(s);

}

catch(IOException e)

{ Cuadro de texto del resultado del cálculo. setText("Desconectado del servidor");

break;

}

}

}

public void actionPerformed(ActionEvent e)

{ if(e.getSource()==cálculo)

{ String s=Ingrese el cuadro de texto de longitud de tres lados.getText();

if(s!=null)

{ prueba { out.writeUTF(s);

}

catch(IOException e1 ) {}

}

}

}

}

(2) Lado del servidor

importar java.io.*;importar java.net.*;

importar java.util.*;importar java.sql.*;

clase pública Computer_server

p>

{ public static void main(String args[])

{ ServerSocket server=null;Server_thread thread;

Socket you=null;

while(true)

{ try{ server=new ServerSocket(4331);

}

catch(IOException e1)

{ System.out.println("Listening"); //Los objetos ServerSocket no se pueden crear repetidamente.

}

try{ you=server.accept();

System.out.println("Dirección del cliente:"+you.getInetAddress() ) ;

}

catch (IOException e)

{ System.out.println("Esperando cliente");

}

if(you!=null)

{ new Server_thread(you).start() //Inicia un hilo dedicado para cada cliente.

}

más

{ continuar;

}

}

}

}

clase Server_thread extiende Thread

{ Socket socket;Connection Con=null;Statement Stmt=null;

DataOutputStream out= null;DataInputStream in=null;int n=0;

String s=null;

Server_thread(Socket t)

{ socket=t;

intente { in=new DataInputStream(socket.getInputStream());

out=new DataOutputStream(socket.getOutputStream());

}

catch (IOException e)

{}

}

public void run()

{ while(true)

{ double a[]=new double[3] ;int i=0;

try{ s=in.readUTF(); estado de bloqueo a menos que se lea la información.

StringTokenizer fenxi=new StringTokenizer(s," ,");

while(fenxi.hasMoreTokens())

{ String temp=fenxi.nextToken( );

intentar{ a[i]=Double.valueOf(temp).doubleValue();i++;

}

catch(NumberFormatException e)

{ out.writeUTF("Ingrese caracteres numéricos");

}

}

double p=(a[0] +a[1]+a[2])/2.0;

out.writeUTF(" "+Math.sqrt(p*(p-a[0])*(p-a[1])*(p-a [2])));

dormir(2);

}

catch(InterruptedException e){}

catch ( IOException e)

{ System.out.println("El cliente se fue");

break;

}

}

}

}

Estos ejemplos son del tutorial práctico de Java2.