Atualmente estou estudando a programação de recebimento TCP. O problema é que estou usando o método int reclen = ReceiveAsync(Memory, SocketFlags, CancellationToken) , reclen > 0 mas simplesmente não recebo nada na memória (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;
}
}
No entanto, funciona bem quando mudo para o método ReceiveAsync(ArraySegment, SocketFlags) . tcpRecReserve recebe dados precisos. Depurando Image2 Minha pergunta é por que isso aconteceu e como posso resolver isso.
Você menciona “Unidade”; é possível que este seja um erro do Unity, ou é possível que seja um erro no código que você não está mostrando, mas: aqui está uma versão ligeiramente modificada do seu código (apenas alterada para usar um loop em vez de recursão) que funciona bem; a saída é:
qual é a resposta esperada de uma
PING
mensagem RESP; código: