Programación General > C/C++

 Problema con SOCKET/LINUX

(1/1)

fachamix:
Tengo el siguiente codigo, un simple servidor usando sockets sobre linux.

al momento de hacer el "write" se termina la conexion ... y me canse de revisar el codigo. Me duele la cabeza.

aqui el bendito codigo.


--- Código: C ---#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <sys/un.h>#include <netinet/in.h>#include <arpa/inet.h> int main(){    printf("Iniciando servidor ...\n\r");    int server_sockfd, client_sockfd;    struct sockaddr_in server_dir, client_dir;    int server_len, client_len;    char buffer[1024];     server_sockfd = socket(AF_INET, SOCK_STREAM, 0);    server_dir.sin_family = AF_INET;    server_dir.sin_addr.s_addr = inet_addr("10.0.0.4");    server_dir.sin_port = htons(9981);     server_len = sizeof(server_dir);    bind(server_sockfd,(struct sockaddr*)(&server_dir),server_len);     listen(server_sockfd,5);     while (1)    {        printf("Esperando clientes ...\n\r");         client_len = sizeof(client_dir);        client_sockfd = accept(server_sockfd,(struct sockaddr*)&client_dir,(socklen_t*)&client_len);        if (client_sockfd == -1)        {            perror("DEBUG");            exit(EXIT_FAILURE);        }        printf("Cliente conectado, esperando datos ...\n\r");        while (1)        {            memset(buffer,'\0',sizeof(buffer));            int temp = read(client_sockfd,buffer,sizeof(buffer));            buffer[strlen(buffer) - 2] = '\0';            printf("Leidos %d \n\r",temp);            printf("Datos recibidos [%s]\n\r",buffer);            if (strcmp(buffer,"quit") == 0)            {                break;            }            printf("Enviando respuesta de ECHO\n\r"); //ESTO SI SE EJECUTA            strcpy(buffer,"DATOS-RECIBIDOS"); //ESTO TAMBIEN            write(server_sockfd,buffer,sizeof(buffer)); //CREO QUE AQUI ESTA EL ERROR,                                                                         //HACE QUE SE TERMINE EL PROGRAMA ABRUPTAMENTE        }        close(client_sockfd);        printf("Fin de conexion.\n\r");    }    close(server_sockfd);    exit(EXIT_SUCCESS);} 
para probar este codigo , ejecuto este servidor, y para el cliente uso TELNET apuntando a la IP.
Logro conectarme y mandar un paquete, pero automaticamente el programa termina abruptamente.

gracias por su ayuda.

fachamix:
old: write(server_sockfd,buffer,sizeof(buffer));
new: write(client_sockfd,buffer,strlen(buffer));


SOLVED!

Navegación

[0] Índice de Mensajes

Ir a la versión completa