コード例 #1
0
        private static void WriteChars(string pString, IStreamOutput pOutput)
        {
            if (pString == null)
            {
                pOutput.WriteInt(255);
                return;
            }

            int length = pString.Length;

            // pString.Length == index 3
            if (length >= 128)
            {
                // offset 7
                pOutput.WriteByte(length >> 16 | 0x80);
                pOutput.WriteByte(length >> 8 & 0xff);
                pOutput.WriteByte(length & 0xff);
            }
            //offset 16
            pOutput.WriteByte(length);

            if (length > 0)
            {
                pOutput.WriteChars(pString);
            }
        }
コード例 #2
0
 private void Write(GenericProtocol pNode, int pIndex, IStreamOutput pOutput)
 {
     if (ByteData != null)
     {
         pOutput.Write(ByteData);
     }
     pOutput.WriteShort((short)pIndex);
     // Rekursive Methode:
     Write((object)pNode, pIndex, pOutput);
 }
コード例 #3
0
ファイル: Server.xaml.cs プロジェクト: Muny/Azuru-Screen-WPF
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            if ((string)button1.Content == "Start Sharing")
            {
                SharingSource = null;

                SharingSourceDialog ssd = new SharingSourceDialog();
                if (ssd.ShowDialog() == true)
                {
                    StreamOutputDialog sod = new StreamOutputDialog();

                    if (sod.ShowDialog() == true)
                    {
                        SharingSource = ssd.SharingSource;

                        SharingSource.NewFrame  += SharingSource_NewFrame;
                        SharingSource.FPSUpdate += SharingSource_FPSUpdate;


                        button1.Content = "Stop Sharing";

                        //output = new FrameServer(IPAddress.Any, 8076);
                        output = sod.StreamOutput;

                        if (output.Port != null)
                        {
                            NATDialog natd = new NATDialog((int)output.Port);
                            if (natd.ShowDialog() == true)
                            {
                                lastIpAddress = natd.IPAddress;
                            }
                        }
                        else
                        {
                            lastIpAddress = "::";
                        }



                        output.ControlPacketReceived += server_ControlPacketReceived;
                        output.ClientConnected       += server_ClientConnected;
                        output.ClientDisconnected    += server_ClientDisonnected;
                        output.Start();

                        SharingSource.Start();

                        if (lastIpAddress != "::")
                        {
                            serverStatusLabel.Content = "Server listening at: " + lastIpAddress + ":" + output.Port;
                        }
                        else
                        {
                            serverStatusLabel.Content = "Server listening";
                        }

                        serverStatusLabel.Background = new SolidColorBrush(System.Windows.Media.Color.FromRgb(116, 224, 131));
                    }
                }
            }
            else
            {
                button1.Content = "Start Sharing";

                StopSharing();
            }
        }
コード例 #4
0
        private void Write(Object pObject, int pIndex, IStreamOutput pOutput)
        {
            List <int> localNodeIndices = _nodeIndices[pIndex];

            for (int i = 0; i < localNodeIndices.Count; i++)
            {
                int i6 = localNodeIndices[i];

                switch (i6)
                {
                case 0:
                    pOutput.WriteByte((byte)pObject);     // Byte
                    break;

                case 1:
                    pOutput.WriteBoolean((bool)pObject);
                    break;

                case 2:
                    pOutput.WriteByte((byte)pObject);
                    break;

                case 3:
                    pOutput.WriteShort((short)pObject);
                    break;

                case 4:
                    pOutput.WriteInt((int)pObject);
                    break;

                case 5:
                    pOutput.WriteLong((long)pObject);
                    break;

                case 6:
                    pOutput.WriteFloat((float)pObject);
                    break;

                case 7:
                    pOutput.WriteDouble((double)pObject);
                    break;

                case 8:
                    pOutput.WriteChar((char)pObject);
                    break;

                case 9:
                    pOutput.WriteUTF((string)pObject);
                    break;

                case 10:
                    break;

                case 11:
                    i++;
                    i6 = localNodeIndices[i];
                    string localNodeName = _nodeNames[i6];
                    var    listOfObjects = ((GenericProtocol)pObject).Get <List <object> >(localNodeName);
                    if (listOfObjects == null)
                    {
                        pOutput.WriteByte(12);
                        i++;
                        break;
                    }
                    foreach (var t in listOfObjects)
                    {
                        pOutput.WriteByte(11);
                        Write(t, i6, pOutput);
                    }
                    pOutput.WriteByte(12);
                    i++;
                    break;

                case 12:     // Ende der Liste
                    break;

                case 13:
                    WriteChars((string)pObject, pOutput);
                    break;

                default:
                    Write(((GenericProtocol)pObject).Get <object>(_nodeNames[i6]), i6, pOutput);
                    break;
                }
            }
        }
コード例 #5
0
        private void Button_Click_3(object sender, RoutedEventArgs e)
        {
            this.DialogResult = true;

            StreamOutput = new MJPEGServer(IPAddress.Any, 8080);
        }