Ich versuche, eine Anwendung in C#, die die Aktivität des IAX2-Ports 4569 liest. Ich habe bereits die UDP-und TCP-Listener erstellt, aber wenn ich versuche, das UDP zu konvertieren Datenteil zu einer Zeichenfolge habe ich einige seltsame Codes gefunden. Ich weiß nicht, ob ich es richtig mache. Einige Hilfe dabei brauche ich. Diese Klasse ist der UDPHeader, von dem ich die Daten bekomme.Wie UDP-Header von Port IAX2 in lesbare Zeichenfolge konvertieren
public class UDPHeader
{
//UDP header fields
private ushort usSourcePort; //Sixteen bits for the source port number
private ushort usDestinationPort; //Sixteen bits for the destination port number
private ushort usLength; //Length of the UDP header
private short sChecksum; //Sixteen bits for the checksum
//(checksum can be negative so taken as short)
//End UDP header fields
private byte[] byUDPData = new byte[4096]; //Data carried by the UDP packet
public UDPHeader(byte [] byBuffer, int nReceived)
{
MemoryStream memoryStream = new MemoryStream(byBuffer, 0, nReceived);
BinaryReader binaryReader = new BinaryReader(memoryStream);
//The first sixteen bits contain the source port
usSourcePort = (ushort)IPAddress.NetworkToHostOrder(binaryReader.ReadInt16());
//The next sixteen bits contain the destination port
usDestinationPort = (ushort)IPAddress.NetworkToHostOrder(binaryReader.ReadInt16());
//The next sixteen bits contain the length of the UDP packet
usLength = (ushort)IPAddress.NetworkToHostOrder(binaryReader.ReadInt16());
//The next sixteen bits contain the checksum
sChecksum = IPAddress.NetworkToHostOrder(binaryReader.ReadInt16());
//Copy the data carried by the UDP packet into the data buffer
Array.Copy(byBuffer,
8, //The UDP header is of 8 bytes so we start copying after it
byUDPData,
0,
nReceived - 8);
}}
Als nächstes habe ich eine Klasse, um die Daten aus dem UDPHeader in normalen Text zu konvertieren. Dies ist der Konstruktor:
public IAXHeader(byte[] byBuffer, int nReceived)
{
MemoryStream memoryStream = new MemoryStream(byBuffer, 0, nReceived);
StringReader stringReader = new StringReader(Encoding.UTF8.GetString(memoryStream.ToArray()));
/** iterate lines of stringReader **/
string aLine = stringReader.ReadLine();
}
Die Console.WriteLine von Aline ist dies:
Ich muss wissen, was ich falsch mache die Bytes von IAX2 UDP Daten zu entschlüsseln.
Danke, ich habe das Protokoll gelesen und meinen Code geändert. Die IAX2-Header-Daten sind verschlüsselt und binär. Ich arbeite noch an der Verschlüsselung, aber ich habe einige der Daten, die ich brauchte. Danke noch einmal. – Lichblitz