Red de conocimiento informático - Conocimiento informático - Implementación del programa de comunicación cliente-servidor.

Implementación del programa de comunicación cliente-servidor.

h>

#include

#include

#include

#include

#include

#include

# definir TAMAÑO sizeof(struct sockaddr_in)

int newsockfd;

int main (int argc, char ** argv) {

int sockfd;

char c;

/* Establecer el punto final de transmisión*/

if ((sockfd = socket (AF_INET, SOCK_STREAM, 0)) == -1) {

perror ("falló la llamada al socket");

exit (1);

}

/* Inicializa el socket de Internet, el número de puerto es 7000

, y la dirección local se especifica como INADDR_ANY */

struct sockaddr_in server;

server.sin_port = htons(7000);

/*"Vincular la dirección del servidor al punto final*/

if (bind (sockfd, (struct sockaddr *) &server, TAMAÑO) == -1) {

perror ( "falló la llamada de enlace");

exit (1)

}

/* Comienza a escuchar las conexiones entrantes*/

if (listen (sockfd, 5) == -1) {

perror ("la llamada de escucha falló");

exit (1);

salir (1);

}

for (;;) {

/*Aceptar conexión*/

if (( newsockfd = aceptar (sockfd, NULL, NULL)) == -1) {

perror ("aceptar llamada fallida"

Continuar

}

/* Genera un proceso hijo para manejar la conexión*/

if (fork () == 0) {

while (recv ( newsockfd, & .c, 1, 0) &g;c, 1, 0) > 0) { // podría usar read

c = toupper (c);

enviar (newsockfd, &c , 1, 0);

}

/* /* Cuando el cliente ya no envía información

/* Genera un proceso hijo para manejar la conexión* /

if (fork () == 0) {

if (fork () == 0) {

while (recv ( newsockfd, & c, 1, 0) > 0) Cuando el cliente ya no envía información

el socket se puede cerrar y el proceso hijo finalizado

*/

cerrar (newsockfd);

salir (0);

}

cerrar (newsockfd);

}

//cliente disponible para telnet