Estoy tratando de pensar en la mejor manera de enviar un archivo de video a través de un socket TCP. He hecho un programa de socket estándar, pero después del comando read
no estoy seguro de cómo puedo guardarlo.Mejor manera de enviar video a través de Socket TCP en C
Ejemplo de código
//bind server socketfd
if (bind(sfdServer, (struct sockaddr*)&adrServer, ServerAddrLen) < 0)
error("ERROR binding");
listen(sfdServer, 5);
while(1){
printf("Waiting for connections...\n");
sfdClient = accept(sfdServer, (struct sockaddr*)&adrClient, &ClientAddrLen);
if(sfdClient < 0)
error("ERROR accepting");
printf("Connection Established.\n");
//set buffer to zero
bzero(buff, 2048);
printf("Reading from client.\n");
numChar = read(sfdClient, buff, 2048);
//What should go here?
close(sfdClient);
close(sfdServer);
}
¿Me acaba de guardar el búfer como un archivo movie.mp4 o algo por el estilo? Me doy cuenta de que podría necesitar cambiar mi tamaño de búfer o posiblemente enviarlo en pedazos. Pero no puedo encontrar ninguna buena información sobre la mejor manera de hacer esto. ¡Cualquier ayuda o un punto en la dirección correcta sería apreciada!
Ok usando esta información pude resolver todo. A partir de ahora puedo transferir texto desde un cliente java a este servidor C. Pero a medida que lo tenga, supongo que siempre que descargue el búfer correctamente cuando reciba datos del cliente, ¿debería transferir un archivo de video de la misma manera? –
Si entiendo su pregunta correctamente, sí: para cada búfer (por ejemplo, de 2048 o menos bytes) que reciba, si lo escribe en su archivo hasta que no reciba más bytes, todo debería funcionar. A la conexión de red y al conector no le importa si es de texto o binario. – payne