¡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; p >
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; p >
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)
{ p>
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>
}
}