Noticias de la tienda de informática
1 Función de escritura write ssize_t write (int fd, const void * buf, size_t nbytes) La función de escritura escribe el contenido del byte nbytes en el buf al descriptor de archivos fd. El número de bytes escritos. Devuelve -1 si falla y establece la variable errno. En el programa de red, hay dos posibilidades cuando escribimos en el descriptor del archivo de socket: 1) El valor de retorno de escritura es mayor que 0, lo que indica que está escrito. Parcial o todos los datos. 2) El valor devuelto es menor que 0. En este momento, se produce un error. Necesitamos procesar según el tipo de error. Si el error es EINTR, indica que se produjo un error de interrupción durante la escritura. Si el IPIPE indica que aparece la conexión de red. El problema (la otra parte ha cerrado la conexión). Para solucionar la situación anterior, escribimos una función de escritura para manejar estas situaciones. Int my_write (int fd, void * buffer, int length) {int bytes_left; int written_bytes; char * ptr; ptr = buffer; bytes_left = length; while (bytes_left > 0) {/* Comience a escribir * /written_bytes = write (fd, ptr, bytes_left); if (written_bytes < = 0) /* Error * /{ Si (errno == EINTR) /* Error de interrupción Continuamos escribiendo * /written_bytes = 0; else /* No hay forma de que se produzcan otros errores, tenemos que retroceder * /return (-1);} bytes_left- = written_bytes; ptr + = written_bytes; /* Continuar escribiendo desde el resto del lugar * /} return (0);} 2 Leer función leer ssize_t leer (int fd, void * buf, size_t nbyte) La función de lectura es responsable de leer el contenido de fd. Cuando la lectura es exitosa, Read devuelve el número de bytes realmente leídos. Si el valor devuelto es 0, indica que se ha leído el final del archivo. Si es menor que 0, indica que se ha producido un error. Si el error es EINTR, la lectura se debe a la interrupción. Si es ECONNREST, se indica la conexión de red. Algo salió mal. Como anteriormente, también escribimos una función de lectura propia. Int my_read (int fd, void * buffer, int length) {int bytes_left; int bytes_read; char * ptr; bytes_left = length; while (bytes_left > 0 ) {bytes_read = leído (fd, ptr, bytes_read); if (bytes_read < 0) {if (errno == EINTR) bytes_read = 0; else else (-1);} else if (bytes_read == 0) break; bytes_left- = bytes_read; ptr + = bytes_read;} return (length-bytes_left);} 3 Transferencia de datos Con las dos funciones anteriores , podemos pasar datos al cliente o al servidor. Por ejemplo, debemos pasar una estructura. Puede usar la siguiente manera /* cliente escribe en el servidor * /struct my_struct my_struct_client; write (fd, (void *) &My_struct_client, sizeof (struct my_struct); /* server-side read * /char buffer [sizeof (struct my_struct)]; struct * my_struct_server; read (fd, (void *) buffer, sizeof (struct my_struct)) my_struct_server = (struct My_struct *) búfer; cuando se pasan datos a la red, generalmente los convertimos en transferencia de datos de tipo char. Lo mismo ocurre cuando se recibe. No necesitamos pasar punteros a la red (porque los punteros de paso no tienen ningún sentido) , debemos pasar el puntero al contenido)
un resumen en la empresa para llevar a cabo una gestión unificada de las cuentas y contraseñas pa
Hay algunos escenarios en los que el administrador del sistema quiere que solo unos pocos usuarios
" Un programador real no necesita un IDE. Todos usan un editor de texto con un complemento
Mono es un marco de desarrollo .NET de código abierto y multiplataforma. Soporte para sistemas Lin
Cómo modificar el valor del nivel de ejecución de Linux
Conflictos en Linux y sus respuestas
Linux tuberías y filtros tutorial
Administración de discos de Linux: df, du, fdisk, mkfs, fsck
Modificar la configuración de IP, DNS y enrutamiento bajo Linux
Red Hat lanza Linux desktop compitiendo con Novell durante el año
Linux vi save exit command (cómo salir de vi)
Es posible que no sepa que la comunicación entre procesos del sistema operativo Linux
Tutorial básico de conversión de codificación de Linux
Cómo restablecer la contraseña de MySQL ROOT en Linux
AMD dice que los sistemas que no son Android /Linux /Win no tienen sentido.
¿Qué debo hacer si la actualización de Win8.1 no se actualiza correctamente?
Fácil de resolver el problema del controlador de la tarjeta de sonido de Windows7 incompleto
Pantalla completa del juego CS del sistema Win7, juego con borde negro, cómo eliminar
Cómo configurar el botón de encendido de la Actualización de Win8.1
Cómo cambiar rápidamente el sonido de arranque de ghost win7
¿Qué pasa si el enrutador Win7 no puede conectarse?