How to write a Ejemplo Socket Cliente in Java Program ?
package redessocket;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
/**
*
* @author Lopez, Mariano
*/
import java.io.*;
public class SocketCliente {
public static void main(String[] args) {
System.out.println("Socket Cliente - Redes de datos 2015 - Lopez, Mariano");
try {
String frase;
//buffer para almacenar la entrada por teclado
BufferedReader entradaDesdeUsuario = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Ingrese la IP y el puerto (ip:puerto) para conectar el socket: ");
//lectura del teclado, particion del string dejando en la posición 0 la ip y en la 1 el puerto
String[] aux = (entradaDesdeUsuario.readLine()).split(":");
//inicialización del socket
Socket socketCliente = new Socket(aux[0], Integer.parseInt(aux[1]));
System.out.println("Inicialización correcta! IP:puerto: "+aux[0]+":"+aux[1]);
//stream para comunicar con el socket server
DataOutputStream salidaAServidor = new DataOutputStream(socketCliente.getOutputStream());
//stram para leer al server
DataInputStream inn = new DataInputStream(socketCliente.getInputStream());
//mientras este abierta la conexión
while(!socketCliente.isClosed()){
//leer comando por teclado
frase = entradaDesdeUsuario.readLine();
//si el comando fue exit finaliza el while e informa salida al server
if(frase.equals("exit")){
//envio al servidor
//salidaAServidor.writeBytes(frase + "\n");
enviar(salidaAServidor, frase);
break;
}else{
//envio al servidor
enviar(salidaAServidor, frase);
//salidaAServidor.writeBytes(frase + "\n");
//imprimir lo que responde el servidor (requiere conversión)
System.out.println(readStringUTF(inn));
}
}
//cerrar socket
socketCliente.close();
} catch (IOException ex) {
System.out.println(ex.toString());
}catch(NumberFormatException fe){
System.out.println(fe.toString());
}
}
//retornar String formato UTF-8 a partir de un inputStram
private static String readStringUTF(DataInputStream in) throws IOException{
int length=in.readInt();
byte[] data=new byte[length];
in.readFully(data);
return new String(data,"UTF-8");
}
private static void enviar(DataOutputStream salidaAServidor,String mensaje) throws IOException{
String estado = "";
String aux = mensaje+"\nUser-Agent: "+System.getProperty("os.name")+"\n";
byte[] data=aux.getBytes("UTF-8");
salidaAServidor.writeInt(data.length);
salidaAServidor.write(data);
}
}
Learn More :
Socket
If the answers is incorrect or not given, you can answer the above question in the comment box. If the answers is incorrect or not given, you can answer the above question in the comment box.