Red de conocimiento informático - Problemas con los teléfonos móviles - Programación de socket para implementar el programa de chat

Programación de socket para implementar el programa de chat

//Este es un programa de transferencia de archivos por lotes que ejecuta primero el servidor y luego el cliente. Puede transferir todo el contenido del archivo e:\\1 del cliente al servidor y colocarlo en la carpeta e:\\2 de la computadora servidor de acuerdo con la estructura de carpetas original.

/*

* MyClient.java

*

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

p>

*

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

* y abra la plantilla en el editor.

*/

Importar Java io *;

Importar Java net * . >

{

Cliente de socket;

Indicador booleano = true;

FileInputStream fis//Este flujo de entrada es responsable de leer los archivos transferidos locales.

DataOutputStream dos//Este flujo de salida es responsable de transmitir datos a otra computadora (lado del 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)

{

Nuevo MiCliente(). inicio del cliente();

}

public void ClientStart()

{

Probar

{

client = new Socket(" 192.168 . 2 . 101 ", 30000); // IP del lado del servidor, (esto es solo en la LAN) El mío es este, el tuyo depende de la realidad.

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

system out . println(" conectado "); flujo de salida(cliente. get flujo de salida());

dis = nuevos datos flujo de entrada(cliente. getinputstream());

Transferir(nuevo archivo(" e:\ \ 1 \ \ ");

string s = "/]00 "; //Marca que indica la finalización de la transferencia

byte b[]= s. getbytes();

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

dos.flush();

}

Catch (IOException e )

{

sistema . println("Error"

}

}

public void transmit(file f)throwsioexception//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 a través del sentencia if.

Si (f1.isDirectory()) //fi es una carpeta, 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 . . read();

Transmisión (f 1); //Debido a que f1 es una carpeta (es decir, un directorio), puede haber archivos o carpetas en ella, por lo que se realiza la recursividad.

}

Otros

{

fis = nuevo archivo inputstream(f 1);

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

b = ts . getbytes();

dos .

dos .escribir int(fis . disponible()); //Transmite un valor entero que indica el tamaño del archivo a transferir. p>

dis .read();

b = nuevo byte[10000];

while(fis.available()>0)//Iniciar transferencia de archivos

{

ti = fis.read(b);

dos.write(b, 0, ti);

dos. fluir();

}

dos . fluir();

fis cerrar()

dis .

}

}

}

}

/*

* MyServer.java

*

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

*

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

* y abra la plantilla en el editor

*/

/**

*

* @authoradmin

*/

Importar Java io *; >

Clase pública MyServer

{

Servidor ServerSocket = nulo

Cliente de socket = nulo

Indicador booleano = verdadero;

DataInputStream dis

DataOutputStream dos

Flujo de salida de archivos fos

Public static void main(String[] args)

{

Nuevo MiServidor().

inicio del servidor();

}

public void ServerStart()

{

Probar

{

servidor = nuevo socket de servidor(30000);

System.out.println("Número de puerto:"+servidor . getlocalport());

cliente = servidor . aceptar();

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

dis = nuevos datos inputstream(client . getinputstream()); p>dos = nuevo flujo de salida de datos(cliente . obtener flujo de salida());

Cadena respuesta = " g

byte ans[]= respuesta . getbytes(); p>

byte b[]=nuevo byte[1000];

int ti

Nuevo archivo ("e:\\2").

mkdirs();

mientras(bandera)

{

ti = dis . ans);

String select=new String(b, 0, ti);

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

{

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

sistema . out . println(" crear directorio ");

f . ))

{

fos = flujo de salida de nuevo archivo(" e:\ \ 2 \ \ "+(select . replace("/]0c "," "))) ;

Cadena cs;

Booleano cflag = true

int tip = dis . readint()

dos . );

mientras(tip>0)

{

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

tip = tip-ti;

cs = nueva cadena (b, 0, 4

fos.write(b, 0 , ti);

}

fos .flush();

fos .close()

dos . >

}

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

{

bandera = false

}

}

dis .cerrar();

cliente .cerrar()

servidor . /p>

}

Captura (IOException e)

{

system out . p>}

}

}