我目前正在研究TCP接收编程。问题是当我使用int reclen = ReceiveAsync(Memory, SocketFlags, CancellationToken)方法时,reclen > 0 但我在内存中没有收到任何内容(tcpRecReserve)。
public async Task BeginTcpRecieve()
{
try
{
//ArraySegment<byte> bytes = new ArraySegment<byte>(tcpRecReserve,catchNum, tcpRecReserve.Length - catchNum);
Memory<byte> memory = new Memory<byte>(tcpRecReserve, catchNum, tcpRecReserve.Length - catchNum);
int reclen = await tcpSocket.ReceiveAsync(memory, SocketFlags.None);
HandleReceive(reclen);
await BeginTcpRecieve();
}
catch (SocketException e)
{
print(e.ErrorCode + "/" + e.Message);
isConnected= false;
}
}
但是,当我切换到ReceiveAsync(ArraySegment, SocketFlags)方法 时,它效果很好。tcpRecReserve接收准确的数据。 调试 Image2 我的问题是为什么会发生这种情况以及如何解决它。