From 3593a483d5566779f1d56e037615685cdc77c0a0 Mon Sep 17 00:00:00 2001 From: fcolin Date: Thu, 1 Feb 2007 12:05:47 +0000 Subject: modification structure svn --- IvyPPC/IvyUDPStreamV4.cs | 80 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 IvyPPC/IvyUDPStreamV4.cs (limited to 'IvyPPC/IvyUDPStreamV4.cs') diff --git a/IvyPPC/IvyUDPStreamV4.cs b/IvyPPC/IvyUDPStreamV4.cs new file mode 100644 index 0000000..b8d329a --- /dev/null +++ b/IvyPPC/IvyUDPStreamV4.cs @@ -0,0 +1,80 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Net; +using System.Net.Sockets; +using System.IO; + +namespace IvyBus +{ + class IvyUDPStreamV4 : IvyUDPStream + { + + BinaryReader input; + BinaryWriter output; + + /// the protocol version number + internal const ushort PROCOCOLVERSION = 4; + public IvyUDPStreamV4(Socket _socket) : base ( _socket, PROCOCOLVERSION) + { + input = new BinaryReader( in_stream,Encoding.ASCII); + output = new BinaryWriter(out_stream, Encoding.ASCII); + } + /* + * message Syntax: + * this is a binary formated message use of network representation + * + * message Format: + protocol_version, TCP server port , lenAppId, appId, lenAppNameId, appName + */ + private ushort DeserializeShort() + { + return (ushort)IPAddress.NetworkToHostOrder((ushort)input.ReadUInt16()); + } + private string DeserializeString() + { + string arg; + int val_len; + char[] data; + val_len = (ushort)IPAddress.NetworkToHostOrder((ushort)input.ReadUInt16()); + if (val_len != 0) + { + data = input.ReadChars(val_len); + arg = new String(data); + } + else + arg = ""; + return arg; + } + + internal override void Deserialize(out ushort version, out ushort port, out string appId, out string appName) + { + version = DeserializeShort(); + port = DeserializeShort(); + appId = DeserializeString(); + appName = DeserializeString(); + + } + private void Serialize(ushort arg) + { + output.Write((ushort)IPAddress.HostToNetworkOrder(arg)); + } + private void Serialize(string arg) + { + ushort length = arg != null ? (ushort)arg.Length : (ushort)0; + Serialize(length); + if (length != 0) + output.Write(arg.ToCharArray()); + } + + internal override void Serialize(ushort port, string appId, string appName) + { + Serialize(PROCOCOLVERSION ); + Serialize(port); + Serialize(appId); + Serialize(appName); + output.Flush(); + } + + } +} -- cgit v1.1