Red de conocimiento informático - Conocimiento del nombre de dominio - ¡Urgente! ! ! ! ¡Buscamos JAVA Emperor! Programación de sockets JAVA para implementar programas de chat u otras funciones.

¡Urgente! ! ! ! ¡Buscamos JAVA Emperor! Programación de sockets JAVA para implementar programas de chat u otras funciones.

//Este es un programa de transferencia de archivos por lotes, ejecute primero el servidor y luego el cliente.

Todo el contenido del archivo e:\\1 en el lado del cliente se puede transferir al lado del servidor y colocarse en la carpeta e:\\2 en la computadora del lado del servidor de acuerdo con la estructura de carpetas original

/*

* MyClient.java

*

* Creado el 16 de agosto de 2009 a las 13:37

*< / p>

* Para cambiar esta plantilla, elija Herramientas | Administrador de plantillas

* y abra la plantilla en el editor.

*/

importar java .io.*;

importar java.net.*;

clase pública MyClient

{

Cliente de socket;

boolean flag=true;

FileInputStream fis;//Este flujo de entrada es responsable de leer los archivos que se transferirán a la máquina local

DataOutputStream dos;//Esto El flujo de salida es responsable de transmitir datos a otra computadora (servidor)

DataInputStream dis;//Este flujo de entrada es responsable de leer la información de respuesta de otra computadora

public static void main( String[ ] args)

{

new MyClient().ClientStart();

}

public void ClientStart()

{

probar

{

client=new Socket("192.168.2.101",30000);//IP del lado del servidor , (esto solo en la LAN) El mío es este, el tuyo depende de la situación real

//client=new Socket("localhost",30000);

System.out. println ("Conectado");

dos=new DataOutputStream(client.getOutputStream());

dis=new DataInputStream(client.getInputStream());

transmitir(new File("e:\\1\\"));

String s="/]00";//marca que indica la finalización de la transmisión

byte b[]=s.getBytes();

dos.write(b,0,s.length());

dos.flush();

}

catch(IOException e)

{

System.out.println("Error");

}

}

transmisión de vacío público (Fi

le f)lanza IOException//Este es el núcleo de la transmisión y será recursivo

{

byte b[];

String ts;

int ti;

for(File f1:f.listFiles())

{ //Primero determine si f1 es un archivo o una carpeta mediante la declaración if

if(f1.isDirectory()) //fi es una carpeta, luego envía un mensaje al servidor

{

ts="/]0f "+(f1 .getPath().replace("e:\\1\\",""));//"/]0f" se utiliza para indicar que el contenido de este mensaje es el nombre de la carpeta

b= ts.getBytes();

dos.write(b);

dos.flush();

dis.read( );

transmit(f1);//Dado que f1 es una carpeta (es decir, un directorio), es muy probable que haya archivos o carpetas en ella, por lo que se realiza la recursividad

}

else

{

fis=new FileInputStream(f1);

ts="/]0c"+(f1. getPath().replace(" e:\\1\\",""));//Igual que el anterior, indica que este es el nombre de un archivo

b=ts.getBytes() ;

dos.write (b);

dos.flush();

dis.read();

dos. writeInt(fis.available());// Transmite un valor entero que indica el tamaño del archivo a transferir

dos.flush();

dis.read();

b=nuevo byte [10000];

while(fis.available()>0)//Comenzar a transferir archivos

{

ti=fis.read(b);

dos.write(b,0,ti);

dos.flush();

}

dos.flush( );

fis.close();

dis.read();

}

}

}

}

/*

* MiServidor.java

*

* Creado el 16 de agosto de 2009, 11:44 a. m.

*

* Para cambiar esta plantilla, elija Herramientas | Administrador de plantillas

p>

* y abre la plantilla en el editor.

*/

/**

*

* @ autor Administrador

*/

importar java.io.*;

importar java.net.*;

clase pública MiServidor

{

ServerSocket server=null;

Socket client=null;

boolean flag=true;

DataInputStream dis;

DataOutputStream dos;

FileOutputStream fos;

public static void main(String[] args)

{

new MyServer().ServerStart();

}

public void ServerStart()

{

intentar

{

server=new ServerSocket(30000);

System.out.println("Número de puerto:"+server.getLocalPort()) ;

client=server.accept();

System.out.println("Conexión completada");

dis=new DataInputStream(client.getInputStream () );

dos=new DataOutputStream(client.getOutputStream());

Cadena respuesta="g";

byte ans[]=respuesta .getBytes ();

byte b[]=nuevo byte[1000];

int ti;

nuevo archivo("e:\\2" ). mkdirs();

while(bandera)

{

ti=dis.read(b);

escribir( ans);

Cadena select=ne

w String(b,0,ti);

if(select.contains("/]0f"))

{

Archivo f=nuevo archivo ("e:\\2\\"+(select.replace("/]0f","")));

System.out.println("creat directorio");

f.mkdirs();

}

else if(select.contains("/]0c"))

{

fos=new FileOutputStream("e:\\2\\"+(select.replace("/]0c","")));

String cs;

boolean cflag=true;

int tip=dis.readInt();

dos.write(ans);

while(tip>0 )

{

ti=dis.read(b,0,(tip>1000?1000:tip));

tip=tip-ti;

cs=new String(b,0,4);

fos.write(b,0,ti);

}

fos.flush();

fos.close();

dos.write(ans);

}

else if(select.contains("/]00"))

{

flag=false;

}

}

dis.close();

cliente.close();

servidor.close();

}

catch(IOException e)

{

System.out.println("Error");

}<

/p>

}

}