如何接受来自客户端(视频流)的TCP流?

问题描述:

我试图通过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) –

我认为最简单的方法是:

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