#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)
{
}
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);
}