2017-08-25 92 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

不要與Socket類工作,使用像[的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