Hi
I have set up my TcpClient to connect to my server and that works fine. But i am a bit confused how i read messages from the network stream with it continuously running via async, without ever closing the connection ?
My TcpClient Manager class has:
public async Task<bool> Connect(string address, int port)
{
try
{
await _tcpClient.ConnectAsync(address, port);
IsConnected = true;
return true;
}
catch(Exception e)
{
Debug.Log(e);
return false;
}
}
public async Task<int> Read(byte[] readBuffer)
{
if (!IsConnected) return -1;
using (var networkStream = _tcpClient.GetStream())
{
try
{
var bytesRead = await networkStream.ReadAsync(readBuffer, 0, readBuffer.Length);
return bytesRead;
}
catch (Exception e)
{
Debug.Log(e);
IsConnected = false;
return -1;
}
}
}
So i thought to just run a co-routine and call Read constantly to get the most recent message, but that doesn't make much sense to me since a co-routine would be blocked with the await. How is this actually done? The MS Docs don't have very good Async examples with the TcpClient class so i don't know fully get how to keep calling Read correctly.