NetCoreServer
NetCoreServer copied to clipboard
Best way for http GET Stream
How me get http stream for get request(using this nuget)? You need something like this (the code is rough, I know):
if (commands[0].ToUpper() == "HEAD")
{
var response = client.SendHeadRequest(commands[1]).Result;
Console.WriteLine(response);
}
else if (commands[0].ToUpper() == "GET_STREAM")
{
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
var connectEventArg = new SocketAsyncEventArgs();
connectEventArg.RemoteEndPoint = new IPEndPoint(IPAddress.Parse(address), port);
connectEventArg.Completed += async (e, args) =>
{
try
{
var bufferRead = new Memory<byte>(new byte[8000]);
var bufferReadBackground = new Memory<byte>(new byte[8000]);
var bufferSwitch = false;
using (var stream = new NetworkStream(socket))
{
var request = new HttpRequest().MakeGetRequest(commands[1]);
stream.Write(request.Cache.Data);
var taskRead = stream.ReadAsync(bufferRead);
while (stream.CanRead)
{
var size = await taskRead;
Memory<byte> data;
if (!bufferSwitch)
{
data = bufferRead;
taskRead = stream.ReadAsync(bufferReadBackground);
bufferSwitch = true;
}
else
{
data = bufferReadBackground;
taskRead = stream.ReadAsync(bufferRead);
bufferSwitch = false;
}
Console.WriteLine($"Read from stream '{data.Length}'");
//do somthing, example parse data from stream
}
}
}
catch (Exception ex)
{
Console.WriteLine(e);
}
};
socket.ConnectAsync(connectEventArg);
}
For example maybe use stream "31.133.13.58:8888/mjpg/video.mjpg".