如何接受来自客户端(视频流)的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();
}
}
答
我认为最简单的方法是:
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
不要与Socket类工作,使用像[的TcpListener]更高水平封套(https://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener(V = vs.110)的.aspx) –