Piensa Technologies

  >  Foro de Principiantes en Linux - Mensaje
Indice del Foro 
Búsqueda 
 
Búsqueda Especializada  
 
Ingresar  
Nuevo Mensaje al Foro  
 
 Acerca de Linux
La Gaceta de Linux 
Edición en español 
Gazeta do Linux 
Edición en portugués 
Foro de Principiantes 
> Mensaje
Progamación sockets
Ingresado por Cris el día martes marzo 09, @11:48 desde España.
Tema: [ Para Programadores ]

Necesito ayuda urgentemente. Tengo que hacer dos programas en c un servidor y un cliente. El caso es que ha de ser un servidor de ftp que se comunique con el cliente mediante la palabra cambio y tambien envie archivos. Tengo dos códigos pero los tengo que modificar pq no estan enteros. Alguien me puede ayudar? gracias.
//server.c #include #include #include #include #include #include #include #define ERROR(s) {fprintf(stderr,"%d-",errno); perror(s); return(-1);} main (argc, argv) int argc; char *argv[]; { struct sockaddr_in sa; struct sockaddr_in caller; int ssd; int csd; int length; int retval; int action; char buf[BUFSIZ]; char* prompt[]={">>", "Comandos para comunicarse: \n\tescribir => Para enviar un texto\n\tayuda => Para ver este menu\n\tsalir => Para terminar la conexion\n>>", "Escribe el texto que quieras comunicar.\n Para recibir texto escribe 'cambio'\n>>", "Introduce un comando\n>>"}; if (argc != 2) { fprintf (stdout, "usage: %s hostname\n", argv[0]); exit (-1); } sa.sin_family= AF_INET; sa.sin_addr.s_addr = INADDR_ANY; sa.sin_port= htons((u_short) atoi(argv[1])); if ((ssd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) ERROR ("socket"); if (bind(ssd, (struct sockaddr *)&sa, sizeof sa) < 0) ERROR ("bind"); length = sizeof(sa); listen (ssd, 5); if ((csd = accept(ssd, (struct sockaddr *)&caller, &length)) < 0) ERROR ("accept"); write(csd, prompt[0], strlen(prompt[0])); while(action != 2){ if((retval = read(csd, buf, sizeof(buf))) < 0) ERROR("Reading stream message\n"); buf[retval]='\0'; if (strcmp(buf,"ayuda\n")==0) action=0; if (strcmp(buf,"escribir\n")==0) action=1; if (strcmp(buf,"salir\n")==0 || retval==0) action=2; if (strcmp(buf,"cambio\n")==0) action=3; switch (action) { case 0: write(csd, prompt[1], strlen(prompt[1])); action=-1; break; case 1: write(csd, prompt[2], strlen(prompt[2])); action=4; break; case 2: printf("\nLa conexion ha finalizado ...\n"); break; case 3: write(csd, prompt[3], strlen(prompt[3])); action=-1; break; case 4 : printf("%s", buf); break; default: write(csd, prompt[3], strlen(prompt[3])); } } close(csd); close(ssd); exit(0); } ***************************** //cliente1.c #include #include #include #include #include #include #include #define ERROR(s) {printf("%d-",errno); perror(s); return (-1);} char buf[BUFSIZ]; main (argc, argv) int argc; char *argv]; { int sock; struct sockaddr_in sa; struct hostent * host; int n; if (argc!=3) { printf("Usage: %s hostname port\n",argv[0]); exit (-1); } if((sock=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP))<0) ERROR("socket"); if((host=gethostbyname(argv[1]))==(struct hostent*)NULL) ERROR("gethostbyname"); memcpy((char*)&sa.sin_addr, (char*)host->h_addr, host->h_length); sa.sin_family=AF_INET; sa.sin_port=htons((u_short)atoi(argv[2])); if(connect(sock, (struct sockaddr *)&sa, sizeof sa) < 0) ERROR("connect"); while(strcmp(buf,"cambio\n")!=0) { while(!((buf[strlen(buf)-2]=='>') && (buf[strlen(buf)-1]=='>'))) { if ((n=read(sock, buf, sizeof(buf))) < 0) ERROR("read"); buf[n]=0; printf("%s", buf); } if(strcmp(buf, "Escribe el texto que quieras comunicar.\n Para recibir texto escribe 'cambio'\n>>")==0) while(buf[0]!="cambio") { fgets(buf, sizeof(buf), stdin); if (write(sock, buf, strlen(buf))<0) ERROR("write"); } else { fgets(buf, sizeof(buf), stdin); if (write(sock, buf, strlen(buf))<0) ERROR("write"); } } } *****************************

[ Ingresar Comentario ]

<  |  >

> Comentarios
Re: Progamación sockets
por FaRax el día martes diciembre 20, @06:11

Con ese formato cero

[ Ingresar Comentario ]

 

Relacionado
  • Más acerca de Para Programadores
  • Mismo autor Cris
  • Contacto con el autor