私は、ビデオファイルをTCPソケット経由で送信する最良の方法を考えようとしています。私は標準のソケットプログラムを作ったが、read
コマンドの後に私はそれをどのように保存することができるのか分からない。CでTCPソケット経由でビデオを送信する最も良い方法
コードサンプル
//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);
}
私はちょうどそのようなファイルmovie.mp4か何かのようにバッファを保存しますか?私は私のバッファサイズを変更するか、場合によってはチャンクで送る必要があるかもしれないことに気付きました。しかし、私はこれを行うための最善の方法についての良い情報を見つけることができません。どのような助けや正しい方向への指摘に感謝します!
この情報を使用して、私はすべてを整理することができました。現時点では、JavaクライアントからこのCサーバにテキストを転送できます。しかし、クライアントからデータを受け取ったときにバッファを正しくダンプする限り、ビデオファイルを同じ方法で転送する必要があります。 –
あなたの質問を正しく理解していれば、受け取った各バッファ(たとえば2048バイト以下)に対して、それ以上バイトを受け取らないようにファイルに書き出すと、それはすべて動作するはずです。ネットワーク接続とソケットは、テキストかバイナリかどうかは気にしません。 – payne