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); } }
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); }
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(); } }
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; } } }
private void Button_Click_3(object sender, RoutedEventArgs e) { this.DialogResult = true; StreamOutput = new MJPEGServer(IPAddress.Any, 8080); }