programa mirada servidor TCP:
# include < stdlib.h > # include < stdio.h > # include < errno.h > # include < string.h > # include < NetDB .h > # include < sys /types.h > # include < netinet /in.h > # include < sys /socket.h > #define númeropuerto puerto número de puerto //servidor y el cliente 3333 número debe ser igual
int main (int argc, char * argv []) {int sockfd, new_fd; struct sockaddr_in SERVER_ADDR; struct sockaddr_in client_addr; int sin_size; int nbytes; char buffer [1024]; /* iniciar la construcción de servidor descriptor sockfd * /if ((sockfd = socket (AF_INET, SOCK_STREAM, 0)) == - 1) //AF_INET: IPV4; SOCK_STREAM: TCP {fprintf (stderr, " error del zócalo:% s \\ n \\ a " , strerror (errno)); de salida (1);} /* llenar sockaddr servidor de estructura * /bzero (&SERVER_ADDR, sizeof (sockaddr_in struct)); //inicializar contador 0server_addr.sin_family = AF_INET; //Internetserver_addr. Sin_addr.s_addr = htonl (INADDR_ANY); //(convierte los datos largos en esta máquina en datos largos en la red) y cualquier otro Comunicación de la máquina //INADDR_ANY significa que puede recibir datos de cualquier dirección IP, es decir, vincular a todos los IPserver_addr.sin_port = htons (número de puerto); //(transformar los datos cortos en esta máquina en datos cortos en la red) número de puerto /* incluido descriptor sockfd a la dirección IP * /if (bind (sockfd, (struct sockaddr *) (&SERVER_ADDR), sizeof (sockaddr struct)) == - 1) {fprintf (stderr, " Enlazar error:% s \\ n \\ a ", strerror (errno)); exit (1);} /* Establezca el número máximo de clientes que se pueden conectar * /if (listen (sockfd, 5) == - 1) {fprintf (stderr, " Listen Error:% s \\ n \\ a ", strerror (errno)); exit (1);} while (1) {/* El servidor bloquea hasta que el cliente establece una conexión * /sin_size = sizeof (struct sockaddr_in); if (( new_fd = aceptar (sockfd, (struct sockaddr *) (&client_addr), &sin_size)) == - 1) {fprintf (stderr, " aceptar error:% s \\ n \\ a ", strerror (errno)); de salida (1);} fprintf (stderr, " servidor de obtener la conexión de% s \\ n ", inet_ntoa (client_addr.sin_addr)); //convertir una dirección de red a una cadena if ((nbytes = read (new_fd ,. Buffer, 1024)) == - 1) //aquí se puede escribir como si ((nbytes = recv (new_fd, buffer, 1024,0)) == - 1) {fprintf (stderr, " Error de lectura:% s \\ n ", strerror (errno)); exit (1);} buffer [nbytes] = '\\ 0'; printf (" Servidor recibido% s \\ n ", búfer); /* Esta comunicación ha finalizado * /close (new_fd); /* Loop next * /} /* La comunicación final * /cierre (sockfd); exit (0);} programa cliente vea:
# include < stdlib.h > # include < stdio.h > # include < errno.h > # include < string.h > # include < netdb.h > # include < sys /types.h > # include < netinet /in.h > # include < sys /socket.h > #define númeropuerto 3333int main (int argc, char * argv []) {int sockfd; char buffer [1024]; struct sockaddr_in SERVER_ADDR; struct hostent * anfitrión; /* consulta de nombres usando el nombre de host * /if (! argc = 2) {fprintf (stderr, " Uso:% s hostname \\ a \\ n ", argv [0]); la salida (1);} if ((host = gethostbyname (argv [1])) == NULL) {fprintf ( Stderr, " Gethostname error \\ n "); exit (1);} /* El programa cliente comienza a construir el descriptor sockfd * /if ((soc kfd = socket (AF_INET, SOCK_STREAM, 0)) == - 1) //AF_INET: Internet; SOCK_STREAM: TCP {fprintf (stderr, " Socket Error:% s \\ a \\ n ", strerror (errno)); salida (1);} /* llenar los datos cliente-servidor * /bzero (&SERVER_ADDR, sizeof (SERVER_ADDR)); //inicializar contador 0server_addr.sin_family = AF_INET; //IPV4server_addr.sin_port = htons (número de puerto); //(convierte los datos cortos en esta máquina a los datos cortos en la red) número de puerto server_addr.sin_addr = * ((struct in_addr *) host-> h_addr); //dirección IP /* el cliente inicia la solicitud de conexión * /si (connect (sockfd, (struct sockaddr *) (&SERVER_ADDR), sizeof (struct sockaddr)) == - 1) {fprintf (stderr, " conectar error:% s \\ a \\ n ", strerror (Error) ); exit (1);} /* La conexión se realizó correctamente * /printf (" Ingrese el carácter: \\ n "); /* Enviar datos * /fgets (buffer, 1024, stdin); write (sockfd, buffer, strlen (buffer)); //aquí puede escribirse como send (sockfd, buffer, strlen (buffer), 0); /* end communication * /close (sockfd); exit (0);} resultados de ejecución del programa De la siguiente manera: (Nota: servidor cliente de socket y socket del servidor parece estar en un cliente de máquina virtual diferente en tcp_server HI3515 compilador gcc -o tcp_server.c usando el brazo-hismall-linux-gcc -o tcp_client.c tcp_hiclient para compilar Programa) Server Side:
Cliente:
La IP pública, la dirección pública, es asignada por InterNIC y consta de una ID de red basada en c
STM32 tres medios de almacenamiento correspondientes de modo de arranque son tres incorporados en mo
Para garantizar el funcionamiento normal del sistema Linux y resolver con precisión los diversos pro
Primero, el proceso de inicio del sistema Linux Sobre el proceso de inicio del sistema Linux podem
Cómo usar magent para construir un clúster memcached
El tiempo de creación inicial del archivo de vista de Linux
Bajo Linux ver lo difícil modelo de la unidad y el número de serie
sistema de unión Linux NIC para lograr Tutorial
Agregar, eliminar, ejecutar automáticamente y establecer servicios de Linux
"APUE": Procesamiento de señal
Análisis del proceso de arranque de Linux
Cómo resolver Linux 3.16 kernel nvidia 331 error
Instrucciones de configuración para mejorar la seguridad del sistema operativo Linux
Uso de variables para nombrar archivos en Linux
¿Cómo cierra Win10 la vista de tareas? Win10 cierra el método de vista de tarea
Nueva Cortana Xiaona Cue Card en Win10
Después de actualizar win10, ¿cómo puedo instalar ubuntu? Win10 install ubuntu tutorial
La barra de herramientas del CAD ya no existe. ¿Qué debo hacer?
Sistema Win7 computadora abrir archivo rar dos métodos
Cómo instalar otros paquetes de idiomas nacionales para el sistema Win10
Mueve las flores para resolver el problema que Windows 2000 no puede iniciar
El método de entrada de velocidad de la luz no se puede escribir. Solución
Método de configuración de la protección de la cuenta de WeChat
Conocimiento popular: ¿Qué es la carpeta Archivos de programa (x86) en Windows?