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); }
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); }