示例#1
0
        private void OnMessage(IAsyncResult ar)
        {
            //Get data
            int count = sock.EndReceive(ar);

            //Get opcode
            NetIQOpcode op = (NetIQOpcode)BitConverter.ToUInt16(buffer, 0);

            //Handle
            switch (op)
            {
            case NetIQOpcode.SERVER_INFO:
                var cmd = new NetIQCommandServerInfo(buffer);
                OnSampleRateChanged?.Invoke(this, cmd.SampleRate);
                break;
            }

            //Listen
            sock.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, OnMessage, null);
        }
示例#2
0
        private void OnClientConnect(IAsyncResult ar)
        {
            //Get socket
            Socket client = sock.EndAccept(ar);

            //Create client context
            NetIQServerClient ctx = new NetIQServerClient(client);

            //Create and send info packet
            NetIQCommandServerInfo info = new NetIQCommandServerInfo();

            info.ServerVersionMinor = NetIQUtil.PROTO_VERSION_MINOR;
            info.ServerVersionMajor = NetIQUtil.PROTO_VERSION_MAJOR;
            info.SampleRate         = sampleRate;
            info.SendOnSocket(client);

            //Begin listening on this
            client.BeginReceive(ctx.buffer, 0, ctx.buffer.Length, SocketFlags.None, OnClientReceiveData, ctx);

            //Look for another new client
            sock.BeginAccept(OnClientConnect, null);
        }