Ver Mensaje Individual
  #12 (permalink)  
Antiguo 22/04/2005, 09:13
Avatar de stock
stock
 
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años
Puntos: 53
Tema: Socket's
Pregunta: como hago una conexion TCP ??
Respuesta: Una conexion TCP necesita establecer primeramente la conexion entre el cliente y el servidor, donde el servidor estara corriendo y escuchando a un determinado puerto al que el cliente se conectara, cuando la conexion se establece correctamente entonces el cliente manda un mensage y el servidor le responde deacuerdo a lo que halla recibido, Este es un ejemplo muy simple de una coneccion TCP:

El Servidor:
Código PHP:
/*
 * Author: Cryfel Villa
 * Created: sábado, 17 de julio de 2004 6:26:35
 * Modified: sábado, 17 de julio de 2004 6:26:35
 */

import java.net.ServerSocket;
import java.net.Socket;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.io.BufferedOutputStream;

public class 
Servidor extends Thread
{
  
ServerSocket server;
  public 
Servidor()
  {
    
//MANDAMOS LLAMAR AL CONSTRUCTOR DE LA CLASE "Thread" QUIEN ES LA
    //SUPERCLASE DE ESTA CLASE, ASI NOSOTROS CREAMOS LOS HILOS Y DEMAS COSAS
    //LE MANDAMOS UN IDENTIFICADOR EN ESTE CASO "Servidor" PUEDE SER CUALQUIER COSA
    
super("Servidor");
    try
    {
      
//CREAMOS EL SOCKET DEL SERVIDOR
      
server=new ServerSocket(2002);
      
System.out.println("Servidor corriendo...");
    }
    catch(
Exception e)
    {
      
System.out.println("Error al correr el servidor\n"+e);
      
System.exit(1);
    }
  }
  
  public 
void run()
  {
    
Socket client=null;
    while (
true)
    {
      if (
server==null)
        return;
      try
      {
        
//ESPERA A QUE LLEGUE ALGO
        
client=server.accept();
        
System.out.println("Llegó un cliente!");
      }
      catch(
Exception e)
      {
        
System.out.println("No se pudo conectar con el cliente\n"+e);
        
System.exit(1);
      }
      try
      {
        
InputStreamReader isr=new InputStreamReader(client.getInputStream());
        
BufferedReader is=new BufferedReader(isr);
        
PrintWriter os=new PrintWriter(new BufferedOutputStream(client.getOutputStream()),true);
        
String inStr;
        
//IMPRIMOMOS EL MENSAJE Y HACEMOS
                // TODO LO QUE QUERRAMOS HACER CUANDO LLEGUE UNA PETICION
               //EN ESTE CASO NADAMAS IMPRIMIMOS EL MENSAJE RECIVIDO
              //EN LA CONSOLA PERO PUEDES HACER CUALQUIER OTRA COSA
        
while ((inStr=is.readLine())!=null)
        {
          
System.out.println("Cliente: "+inStr);
          
os.println("Hey, cliente, mensaje recibido");
          
os.println("bye");
        }
      }
      catch(
Exception e)
      {
        
System.out.println("Error: "+e);
      }
        }
  }
  
    public static 
void main(String a[])
    {
    
Servidor servidor=new Servidor();
    
servidor.run();
    }

Este es el Cliente
Código PHP:
/*
 * Author: Crysfel Villa
 * Created: sábado, 17 de julio de 2004 6:48:26
 * Modified: sábado, 17 de julio de 2004 6:48:26
 */

import java.net.Socket;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.PrintWriter;

public class 
Cliente
{
    public static 
void main(String a[])
  {
    
Socket socket=null;
    
InputStreamReader isr=null;
    
BufferedReader in=null;
    
PrintWriter out=null;
    try
    {
      
socket=new Socket("192.168.0.1",2002);
      
isr=new InputStreamReader(socket.getInputStream());
      
in=new BufferedReader(isr);
      
out=new PrintWriter(socket.getOutputStream(),true);
    }
    catch(
Exception e)
    {
      
System.out.println("No se pudo crear la conexión\n"+e);
    }
    try
    {
      
StringBuffer str=new StringBuffer(128);
      
String inStr;
      
int c;
      
out.println("Hey, server...");
      
socket.sendUrgentData(100);
      while ((
inStr=in.readLine())!=null)
      {
        
System.out.println("Servidor: "+inStr);
        if (
inStr.equals("bye"))
          break;
        while ((
c=System.in.read())!='\n')
          
str.append((char)c);
        
System.out.println("Cliente: "+str);
        
out.println(str.toString());
        
out.flush();
        
str.setLength(0);
      }
      
out.close();
      
in.close();
      
socket.close();
    }
    catch(
Exception e)
    {
      
System.out.println("Error al enviar mensaje\n"+e);
    }
  }


Última edición por stock; 09/06/2005 a las 10:51