Simuladores Electronicos Del Circuito Electronicos
Creacion de-socket-tcp-en-java
1. Código Java Oracle
Programación, Java, Oracle, Php, JavaScript, Facebook API, WordPress, SEO...
http://codigojavaoracle.com
Cómo crear un Socket TCP en Java
En este artículo mostramos el código necesario para crear un Socket TCP (Orientado a
Conexión) realizado en Java.
Cómo ya sabéis el protocolo TCP está orientado a conexión, para más información podéis ver
este link.
Socket TCP
Basicamente, este es el funcionamiento de los Socket que necesitamos para una conexión
TCP. En el que podemos distinguir dos tipos de Socket el del Servidor y el del Cliente.
La creación del socket en el servidor se remite a crear el socket, indicar por que puerto se
harán las escuchas y esperar a la llamada de un cliente para aceptar la conexión, en cambio un
cliente creará el socket e indicará donde se encuentra y por que puerto quiere conectarse, de
está forma Cliente y Servidor crearán una conexión.
Servidor:
Para crear los socket se crea un objeto del tipo ServerSocket, este método pertenece a la
clase java.net.Serversocket
Una vez que hemos creado el objeto socket mandamos un parámetro que indicará el puerto
por el que se realzará las comunicaciones.
Para realizar una conexión entre Cliente-Servidor, el servidor usará el método socket.accept
para confirmar que se ha iniciado la conexión.
Cliente:
Primero crea un objeto del tipo Socket que pertenece a la clase java.net.Serversocket,
Después se obtiene un objeto InetAddress, y usando el método getByName le indicamos
donde se va a ejecutar el cliente, en nuestro caso indicamos que será en localhost.
Finalmente creamos un objeto de tipo socket al que pasaremos la dirección donde se está
ejecutando el cliente, y el puerto por donde se conectará al servidor.
Código del Servidor:
import java.net.*; //Importa la libreria java.net import java.io.
*; //Importa la libreria java.io
public class servidortcp {
//
se declara una clase de nombre servidortcp
public static void mai
n(String argv[]) {
//Se declara el método principal main
1/4
2. Código Java Oracle
Programación, Java, Oracle, Php, JavaScript, Facebook API, WordPress, SEO...
http://codigojavaoracle.com
que espera un parámetro
System.out.println("SERVIDOR");
ServerSocket socket;
//Se crea un objeto de ServerSocket
//b
oolean fin = false; //Se declara una variable booleana inicializada a
false
try {
//Abrimos una exceptción para el
tratamiento de errores
//Creamos un servidor
socke
t = new ServerSocket(6004); //Abre un socket en modo escucha en el pue
rto 6001
Socket socket_cli = socket.accept(); //Inicio.Se a
cepta la conexión.
//Método de la clase socket pa
ra recibir datos
DataInputStream in =
new DataI
nputStream(socket_cli.getInputStream());
//Método
para mandar un valor al cliente
DataOutputStream out =
new DataOutputStream(socket_cli.getOutputStream());
String mensaje =""; //Se inicializa la variabl
e de string mensaje a vacío
mensaje = in.readUTF(); //La var
iable Mensaje guarda el valor que ha mandado el cliente
if (mensaje.startsWith("HELLO")) {
out.writeUTF("HEL
LO");
}
do {
//Est
ará escuchando el mensaje sin interrupción debido a la condición (1>0)
del while
mensaje =""; //Se inicializa la variable de st
ring mensaje a vacío
mensaje = in.readUTF(); //La variabl
e Mensaje guarda el valor que ha mandado el cliente
if (mensaje.startsWith("ALL")) {
mensaje = "ALL BUR:250;CHE:300; BIG:540; PAT:380; SAL:240; BEV:210; D
IE:0; COF:0; DES:300";
System.out.println(mensaje);
}
else if(mensaje.startsWith("BUR
"))
{
mensaje = "BUR 250";
Sy
stem.out.println(mensaje);
}
else if (mensaj
e.startsWith("CHE")) {
mensaje = "CHE 300";
System.out.println(mensaje);
}
else if (me
nsaje.startsWith("BIG")) {
mensaje= "BIG 540";
System.out.println(mensaje);
}
else if
(mensaje.startsWith("PAT")) {
mensaje= "PAT 380";
System.out.println(mensaje);
}
else
if (mensaje.startsWith("SAL")) {
mensaje= "SAL 240";
System.out.println(mensaje);
}
el
se if (mensaje.startsWith("BEV")) {
mensaje= "SAL 210";
System.out.println(mensaje);
}
else if (mensaje.startsWith("DIE")) {
mensaje= "DIE 0";
System.out.println(mensaje);
}
else if (mensaje.startsWith("COF")) {
mensaje= "COF 0"
;
System.out.println(mensaje);
}
else if (mensaje.startsWith("DES")) {
mensaje= "DES 3
00";
System.out.println(mensaje);
}
else if (mensaje.startsWith("fin")) {
mensaje= "fi
n";
System.out.println(mensaje);
}
else{
mensaje = "ERROR";
System.o
2/4
3. Código Java Oracle
Programación, Java, Oracle, Php, JavaScript, Facebook API, WordPress, SEO...
http://codigojavaoracle.com
ut.println(mensaje);
}
//Manda
mos al cliente la respuesta de las calorias según lo que ha mandado
out.writeUTF(mensaje);
//System.out.printl
n(mensaje);
} while (1>0);
}
c
atch (Exception e) {
//Si se produce algún error saltará la ex
cepción con el mensaje de error
System.err.println(e.getMess
age());
System.exit(1); //Salimos con error
}
}
}
Código del Cliente:
import java.net.*; //Se importa la libreria java.net import java.
io.*; //Se importa la libreria java.io
//Se declara la clase client
etcp public class clientetcp {
//Se declara el método principal
main que recibe un parámetro
public static void main(String argv[]
) {
//Si no recibe ningún parámetro dará error
if (arg
v.length == 0) {
System.err.println("java clientetcp servido
r");
System.exit(1);
}
System.out.println(
"CLIENTE");
// Se guarda en el buffer un valor introducido p
or pantalla
BufferedReader in = new BufferedReader(new InputS
treamReader(System.in));
Socket socket=null; //Se crea un obj
eto de tipo socket
InetAddress address; //Se crea un objeto de
tipo InetAddress
String mensaje=""; //Se declara una variable d
e tipo string
try {
//Se abre una excepción
//Obtiene el nombre de la dirección remota del socket
a
ddress=InetAddress.getByName(argv[0]);
try{
soc
ket = new Socket(address,Integer.parseInt(argv[1])); //Se crea un obje
to de tipo socket
//para
establecer una conexión por el puerto 6001
}catch(NumberFor
matException nfe){
System.err.println("El argumento argv[1]
no es un numero");
System.exit(1);
}
//Se declara un objeto de tipo DataOutputStream para mandar valores a
l servidor
DataOutputStream out =
new DataOutp
utStream(socket.getOutputStream());
//Se declara un objeto
de tipo DataOutputStream para mandar obtener al servidor
Da
taInputStream in2 =
new DataInputStream(socket.getInputS
tream());
//Mandamos la palabra HELLO al servidor
out.writeUTF("HELLO");
//Recogemos lo que nos dev
uelve el servidor y lo guardamos en la variable mensaje
mens
aje = in2.readUTF();
System.out.println(mensaje); //Imprime
el contenido de mensaje
do {
//Mientra
s el mensaje no sea fin seguira leyendo
mensaje = in.read
Line();
out.writeUTF(mensaje);
//System.out.
println(mensaje); //Imprime el contenido de mensaje
3/4
4. Código Java Oracle
Programación, Java, Oracle, Php, JavaScript, Facebook API, WordPress, SEO...
http://codigojavaoracle.com
//NUEVO
mensaje =""; //Se inicializa la variable de
string mensaje a vacío
mensaje = in2.readUTF();
System.out.println(mensaje); //Imprime el contenido de mensaje
//NUEVO
} while (!mensaje.startsWith("fi
n"));
}
catch (Exception e) {
System.err.print
ln(e.getMessage());
System.exit(1);
}
} }
4/4
Powered by TCPDF (www.tcpdf.org)