que diferencia hay entre write, fwrite y send

joven argentino que cursas en la utn sistemas operativos o muchacho global que andas queriendo aprender a programar entrada salida y sockets en C, espero que esto te oriente.

write es la llamada del sistema operativo a un descriptor. El descriptor es una abstracción que usan los sistemas operativos tipo POSIX para representar un dispositivo al que se le pueden escribir o se pueden leerle datos. La función está declarada en el archivo header unistd.h.

fwrite es una función de la biblioteca estándar de C y se utiliza para escribir registros, indicando cuántos, a un flujo binario. Un flujo es una abstracción que usan muchos lenguajes de programación y que consiste en una secuencia de caracteres (fwrite permite tratarlo de a bytes o bloques) que vienen de un lugar y van a hacia otro. Los flujos más conocidos son los estándar de la consola: teclado entrada y pantalla salida. Para usarla hay que hacer include de stdio.h

send es una función de los sockets. Para utilizarla es necesario incluir las cabeceras sys/types.h y sys/socket.h. Los sockets son otro tipo de abstracción que se utilizan para comunicación entre procesos. Estos procesos pueden estar en un mismo sistema o en distintos. Se le pasa un socket que es también un descriptor pero este se obtiene con las funciones de sockets.

write es de más bajo nivel, es una llamada al sistema operativo. fwrite es propia del concepto de flujo de la biblioteca estándar de C. send permite.

Las 3 reciben un puntero a void, que es la manera en C de referenciar a una posición de datos sin importarnos el tipo de dato. También reciben un size_t que es el tamaño del bloque de datos que vamos a envíar.

Si bien se puede obtener el descriptor de un flujo a traves de una función de biblioteca no se puede hacer el camino inverso ya que el flujo usa un descriptor y no al revés.

send ofrece más control en lo referente a sockets. Se puede indicar que el envío sea bloqueante (el programa se queda bloqueado hasta que pueda envíar los datos) o no bloquentes.

más adelante vamos a hablar de read, fread y recv.

Ah! Revisar la guía beej que es un buen tutorial para iniciarse con sockets.

¡Mucha suerte!

Etiquetas: , , ,

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: