void _setup() { client = new TcpClient(GetHostName(settings.Address), GetPort(settings.Address)); MPChannels.Log(string.Format("*** Channel {0} connected {1}->{2}", Id, client.Client.LocalEndPoint, client.Client.RemoteEndPoint)); client.SendTimeout = SendByteTimeout; client.ReceiveTimeout = ReceiveByteTimeout; channelStreamReader = new BinaryReader(client.GetStream()); channelStreamWriter = new BinaryWriter(client.GetStream()); alg = TripleDES.Create(); alg.Key = Encoding.ASCII.GetBytes(settings.KeyForSend); packetBodyStreamReader = new BinaryReader(packetBodyStream); packetBodyStreamWriter = new BinaryWriter(packetBodyStream); channelStreamWriter.Write("PCh"); // Just HeaderId channelStreamWriter.Write(""); // Settings channelStreamWriter.Write(settings.NameForConnect); channelStreamReader.ReadString(); // OK stopTimer = new ManualTimer(NotUsedTimeout); idleSendTimer = new ManualTimer(SendIdleTimeout); state = State.Connected; }
public static MPProtectedChannel GetChannel(string channelName, int waitTime) { if (MPChannelSettings.Find(channelName) == null) { return(null); } if (waitTime <= 0) { waitTime = 20 * 1000; } ManualTimer timer = new ManualTimer(waitTime); MPProtectedChannel pc = GetChannel(channelName, true); while (!timer.Timeout) { if (pc != null) { return(pc); } pc = GetChannel(channelName, false); System.Threading.Thread.Sleep(200); } MPChannels.Log(string.Format("Cannot open channel to {0}", channelName)); return(null); }
public void Close() { if (client != null) { try { MPChannels.Log(string.Format("*** Channel {0} closed", Id)); client.Client.Close(); client.Close(); packetBodyStream.Close(); alg.Clear(); } catch { } } state = State.Closed; client = null; }