コード例 #1
0
 private void HandleKcpSend(byte[] buff, int size)
 {
     if (_socket != null && _connected)
     {
         // Debug.Log($">>>> Send time {GetMSClock()}, size: {size}");
         byte[] payload = KCPDatagram.BuildKCP(buff, size);
         _socket.Send(payload, 0, payload.Length, SocketFlags.None);
         // _socket.Send(buff, 0, size, SocketFlags.None);
     }
 }
コード例 #2
0
    public override void Disconnect()
    {
        if (!_connected)
        {
            return;
        }

        byte[] payload = KCPDatagram.BuildRST(_conv);
        _socket.Send(payload, 0, payload.Length, SocketFlags.None);
        _socket.Close();
        _connected = false;
    }
コード例 #3
0
    void ProcessReceiveData(int count)
    {
        KCPDatagram.Command cmd = KCPDatagram.GetCMD(_buffer);

        uint        conv   = KCPDatagram.GetConv(_buffer);
        KCPDatagram kcpCmd = new KCPDatagram();

        kcpCmd.cmd = cmd;
        lock (_cmdQueue)
        {
            _cmdQueue.Enqueue(kcpCmd);
        }

        if (_connected && cmd == KCPDatagram.Command.KCP)
        {
            byte[] messageBytes = KCPDatagram.GetData(_buffer, count);
            lock (_kcpQueue)
            {
                _kcpQueue.Enqueue(messageBytes);
            }
            return;
        }
    }