Re: [Programación] pasaje de mensajes a un socket

Horacio Castellini horacio9573 en yahoo.com.ar
Sab Mar 1 15:44:25 ARDT 2008


> 
> Ahora mi pregunta los descriptores de archivos deben
> ser iguales o !=.

Nop...

Si querés jugar acá te dejo un código probado un
sistema servidor de números aleatorios... y es
perfectamente portable a IPv6... En base esto es facil
desarrollar un cliente... 
----------------------------------
Server..
/*
 * Servidor de numeros aleatorios
 * usa el puerto 2010
 * soporta hasta 5 clientes
 * devuelve una variable entera
 * entre -INT_MAX, INT_MAX
*/
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#define PUERTO 2010
#define CLIENTES 5
/*------------------------------------------------------*/
int main()
{
   int pid,s1,s2,d1;
   int Buf1;
   FILE *flujo;
   struct sockaddr_in servidor;
   pid=fork();
   if(pid<0){
      perror("No se gener\'o hijo\n");
      exit(1);
   }
   if(pid!=0){
      printf("Demonio creado\n");
      printf("su pid= %d\n",pid);
      exit(0);
   }
   servidor.sin_family=AF_INET;
   servidor.sin_port=htons(PUERTO);
   servidor.sin_addr.s_addr=inet_addr("192.168.1.4");
   s1=socket(AF_INET,SOCK_STREAM,0);
   if (s1<0) {
      perror("Soquete no creado\n");
      exit(1);
   }
   d1=bind(s1,(struct sockaddr
*)&servidor,sizeof(servidor));
   if(d1<0){
      perror("No puedo enganchar\n");
      exit(1);
   }
   while(1){
      listen(s1,CLIENTES);
      d1=sizeof(servidor);
      s2=accept(s1,INADDR_ANY,&d1);
      if(s2<0){
         perror("Error al aceptar\n");
         exit(1);
      }
      flujo=fdopen(s2,"w");
      if(flujo==NULL){
         perror("Flujo no creado\n");
         exit(1);
      }
      d1=open("/dev/urandom",O_RDONLY);
      if(d1<0){
         perror("No leo\n");
         exit(1);
        }
      read(d1,&Buf1,sizeof(int));
      close(d1);
      fprintf(flujo,"%d",Buf1);
      fclose(flujo);
      close(s2);
   }
   close(s1);
   return 0;
}



      Los referentes más importantes en compra/ venta de autos se juntaron:
Demotores y Yahoo!
Ahora comprar o vender tu auto es más fácil. Vistá ar.autos.yahoo.com/


Más información sobre la lista de distribución Programacion