fread () requiere un puntero FILE como argumento. Puede crear un puntero FILE a partir de un socket utilizando fdopen (), pero ese socket debe ser un socket de tipo de flujo (SOCK_STREAM) que es TCP. Un socket que usa UDP se crea usando SOCK_DGRAM y no es adecuado para API que requieren un comportamiento de transmisión.
Tenga en cuenta que los sockets TCP y UDP son bidireccionales, puede leer y escribir en un socket ya sea SOCK_STREAM o SOCK_DGRAM. La diferencia es que al recibir datos en un socket de flujo, el socket se llenará hasta el búfer de recepción de la aplicación y retendrá el resto hasta la próxima llamada de recepción (er … recv ()). Con SOCK_DGRAM, el búfer de recepción de la aplicación se llenará con el contenido del datagrama y cualquier exceso de datos que no quepa en el búfer puede descartarse.
Hay muchos artículos sobre cómo no es una buena práctica poner un socket de flujo en una estructura FILE. Está permitido, pero el almacenamiento en búfer de llamadas que usan FILE puede ser ineficiente cuando se combina con el almacenamiento en búfer de varias implementaciones de TCP (por ejemplo, el algoritmo de Nagle).
- ¿Cuáles son las razones por las cuales TCP / IP es importante y cuáles son sus usos?
- ¿Es posible saber la ubicación de la dirección IP de la cuenta falsa de Facebook?
- ¿Cómo cambia ipconfig en Windows su dirección IP?
- ¿Dónde puedo encontrar mi dirección IP en mi iPhone?
- ¿Cómo se usan las tecnologías P2P en Skype?