Próbuję wymyślić najlepszy sposób na przesłanie pliku wideo przez gniazdo TCP. Zrobiłem standardowy program gniazda, ale po poleceniu read
nie jestem pewien, w jaki sposób mogę go zapisać.Najlepszy sposób na przesyłanie wideo przez gniazdo TCP w C
przykładowy kod
//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);
}
Chciałbym po prostu zapisać bufor w postaci pliku movie.mp4 czy coś takiego? Rozumiem, że muszę zmienić rozmiar bufora lub ewentualnie wysłać go w porcjach. Ale nie mogę znaleźć żadnych dobrych informacji na najlepszy sposób, aby to zrobić. Każda pomoc lub punkt we właściwym kierunku zostanie doceniony!
Dobrze, używając tej informacji, udało mi się wszystko uporządkować. W tej chwili mogę przesyłać tekst z klienta java do tego serwera C. Ale jak już masz, zakładam, że tak długo, jak poprawnie zrzutu buforu, gdy otrzymam dane od klienta, powinien przenieść plik wideo w ten sam sposób? –
Jeśli dobrze rozumiem twoje pytanie, tak: dla każdego bufora (np. 2048 lub mniej bajtów), który otrzymasz, jeśli zapiszesz go w swoim pliku, dopóki nie otrzymasz więcej bajtów, wszystko powinno działać. Połączenie sieciowe i gniazdo nie dbają o to, czy jest to tekst czy plik binarny. – payne