2017-08-25 18 views
-2

TCP接続でクライアントからビデオストリームを取得しようとしています。クライアント(ビデオストリーム)からのTCPストリームを受け入れる方法は?

私は以下のコードでソケットを定義しますが、それを続ける方法はわかりません。 クライアントが接続するまで待つ必要があります - クライアントがTCP接続を閉じるまで待ちます -

クライアントからストリームを受け入れる方法と、バイトストリームを保持してすべてを保存する方法がわかりません着信ストリームデータ上のビデオ

public void Connect(int port) 
{ 
    Socket server = 
     new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 

    server.Bind(new IPEndPoint(IPAddress.Any, port)); 

    server.Listen(100); 

    while (true) 
    { 
     Socket clientSocket = server.Accept(); 
    } 
} 
+0

[TcpListener]のような上位レベルのラッパーを使用してください(https://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener(v = vs.110).aspx) –

答えて

1

私は最も簡単な方法は可能だと思う:

TcpListener listener = new TcpListener(IPAddress.Any, 12345); 
listener.Start(); 

while (true) 
{ 
    var client = listener.AcceptTcpClient(); 
    Task.Factory.StartNew(() => 
    { 
     //Create a new file for every connection 
     using (var file = File.Create(Guid.NewGuid() + ".dat")) 
     { 
      client.GetStream().CopyTo(file); 
     } 
    }, TaskCreationOptions.LongRunning); 
} 

PS:ポートにffmpegのストリーミングビデオでテスト12345

ffmpeg.exe -i aa.mp4 -f mpegts tcp://localhost:12345 
関連する問題