This commit is contained in:
		
							
								
								
									
										36
									
								
								PROMS/Volian.Pipe.Library/AssemblyInfo.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								PROMS/Volian.Pipe.Library/AssemblyInfo.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | ||||
| using System.Reflection; | ||||
| using System.Runtime.CompilerServices; | ||||
| using System.Runtime.InteropServices; | ||||
|  | ||||
| // General Information about an assembly is controlled through the following  | ||||
| // set of attributes. Change these attribute values to modify the information | ||||
| // associated with an assembly. | ||||
| [assembly: AssemblyTitle("Volian.Pipe.Library")] | ||||
| [assembly: AssemblyDescription("")] | ||||
| [assembly: AssemblyConfiguration("")] | ||||
| [assembly: AssemblyCompany("")] | ||||
| [assembly: AssemblyProduct("Volian.Pipe.Library")] | ||||
| [assembly: AssemblyCopyright("Copyright ©  2016")] | ||||
| [assembly: AssemblyTrademark("")] | ||||
| [assembly: AssemblyCulture("")] | ||||
|  | ||||
| // Setting ComVisible to false makes the types in this assembly not visible | ||||
| // to COM components.  If you need to access a type in this assembly from  | ||||
| // COM, set the ComVisible attribute to true on that type. | ||||
| [assembly: ComVisible(false)] | ||||
|  | ||||
| // The following GUID is for the ID of the typelib if this project is exposed to COM | ||||
| [assembly: Guid("08f1c830-b1ee-4978-905e-103b02cc4254")] | ||||
|  | ||||
| // Version information for an assembly consists of the following four values: | ||||
| // | ||||
| //      Major Version | ||||
| //      Minor Version  | ||||
| //      Build Number | ||||
| //      Revision | ||||
| // | ||||
| // You can specify all the values or you can default the Build and Revision Numbers  | ||||
| // by using the '*' as shown below: | ||||
| // [assembly: AssemblyVersion("1.0.*")] | ||||
| [assembly: AssemblyVersion("1.0.0.0")] | ||||
| [assembly: AssemblyFileVersion("1.0.0.0")] | ||||
							
								
								
									
										66
									
								
								PROMS/Volian.Pipe.Library/PipeClient.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								PROMS/Volian.Pipe.Library/PipeClient.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,66 @@ | ||||
| /********************************************************************************************* | ||||
|  * Copyright 2016 - Volian Enterprises, Inc. All rights reserved. | ||||
|  * Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE | ||||
|  *********************************************************************************************/ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.IO.Pipes; | ||||
| //using System.Linq; | ||||
| using System.Text; | ||||
| //using System.Threading.Tasks; | ||||
|  | ||||
| namespace Volian.Pipe.Library | ||||
| { | ||||
| 	public class PipeClient | ||||
| 	{ | ||||
| 		private string _Name; | ||||
| 		public string Name | ||||
| 		{ | ||||
| 			get { return _Name; } | ||||
| 			set { _Name = value; } | ||||
| 		} | ||||
| 		private int _TimeOut = 1000; | ||||
| 		public int TimeOut | ||||
| 		{ | ||||
| 			get { return _TimeOut; } | ||||
| 			set { _TimeOut = value; } | ||||
| 		} | ||||
| 		public PipeClient(string name) | ||||
| 		{ | ||||
| 			_Name = name; | ||||
| 		} | ||||
| 		public void Send(string msg) | ||||
| 		{ | ||||
| 			try | ||||
| 			{ | ||||
| 				NamedPipeClientStream pipeStream = new NamedPipeClientStream(".", Name, PipeDirection.Out, PipeOptions.Asynchronous); | ||||
| 				// The connect function will indefinitely wait for the pipe to become available | ||||
| 				// If that is not acceptable specify a maximum waiting time (in ms) | ||||
| 				pipeStream.Connect(TimeOut); | ||||
| 				byte[] _buffer = Encoding.UTF8.GetBytes(msg); | ||||
| 				pipeStream.BeginWrite(_buffer, 0, _buffer.Length, AsyncSend, pipeStream); | ||||
| 			} | ||||
| 			catch (TimeoutException ex) | ||||
| 			{ | ||||
| 				Console.WriteLine(ex.Message); | ||||
| 			} | ||||
| 		} | ||||
| 		private void AsyncSend(IAsyncResult iar) | ||||
| 		{ | ||||
| 			try | ||||
| 			{ | ||||
| 				// Get the pipe | ||||
| 				NamedPipeClientStream pipeStream = (NamedPipeClientStream)iar.AsyncState; | ||||
| 				// End the write | ||||
| 				pipeStream.EndWrite(iar); | ||||
| 				pipeStream.Flush(); | ||||
| 				pipeStream.Close(); | ||||
| 				pipeStream.Dispose(); | ||||
| 			} | ||||
| 			catch (Exception oEX) | ||||
| 			{ | ||||
| 				Console.WriteLine(oEX.Message); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										80
									
								
								PROMS/Volian.Pipe.Library/PipeServer.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								PROMS/Volian.Pipe.Library/PipeServer.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,80 @@ | ||||
| /********************************************************************************************* | ||||
|  * Copyright 2016 - Volian Enterprises, Inc. All rights reserved. | ||||
|  * Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE | ||||
|  *********************************************************************************************/ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.IO.Pipes; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| //using System.Threading.Tasks; | ||||
|  | ||||
| namespace Volian.Pipe.Library | ||||
| { | ||||
| 	// Delegate for passing received message back to caller | ||||
| 	public delegate void DelegateMessage(string Reply); | ||||
| 	public class PipeServer | ||||
| 	{ | ||||
| 		private string _Name; | ||||
| 		public string Name | ||||
| 		{ | ||||
| 			get { return _Name; } | ||||
| 			set { _Name = value; } | ||||
| 		} | ||||
| 		public PipeServer(string name) | ||||
| 		{ | ||||
| 			_Name = name; | ||||
| 		} | ||||
| 		public event DelegateMessage PipeMessage; | ||||
| 		string _pipeName; | ||||
| 		public void Listen() | ||||
| 		{ | ||||
| 			try | ||||
| 			{ | ||||
| 				// Create the new async pipe  | ||||
| 				NamedPipeServerStream pipeServer = new NamedPipeServerStream(Name, PipeDirection.In, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous); | ||||
| 				// Wait for a connection | ||||
| 				pipeServer.BeginWaitForConnection(WaitForConnectionCallBack, pipeServer); | ||||
| 			} | ||||
| 			catch (Exception oEX) | ||||
| 			{ | ||||
| 				Console.WriteLine(oEX.Message); | ||||
| 			} | ||||
| 		} | ||||
| 		private void WaitForConnectionCallBack(IAsyncResult iar) | ||||
| 		{ | ||||
| 			try | ||||
| 			{ | ||||
| 				Console.WriteLine("========WaitForConnectionCallBack========\r\n"); | ||||
| 				// Get the pipe | ||||
| 				NamedPipeServerStream pipeServer = (NamedPipeServerStream)iar.AsyncState; | ||||
| 				// End waiting for the connection | ||||
| 				pipeServer.EndWaitForConnection(iar); | ||||
| 				byte[] buffer = new byte[4096]; | ||||
| 				// Read the incoming message | ||||
| 				int bytecount = 4096; | ||||
| 				StringBuilder sb = new StringBuilder(); | ||||
| 				while (bytecount == 4096) | ||||
| 				{ | ||||
| 					bytecount = pipeServer.Read(buffer, 0, 4096); | ||||
| 					// Convert byte buffer to string | ||||
| 					string stringData = Encoding.UTF8.GetString(buffer, 0, bytecount); | ||||
| 					sb.Append(stringData); | ||||
| 				} | ||||
| 				// Pass message back to calling form | ||||
| 				PipeMessage.Invoke(sb.ToString()); | ||||
| 				// Kill original sever and create new wait server | ||||
| 				pipeServer.Close(); | ||||
| 				pipeServer = null; | ||||
| 				//pipeServer = new NamedPipeServerStream(_pipeName, PipeDirection.In, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous); | ||||
| 				//// Recursively wait for the connection again and again.... | ||||
| 				//pipeServer.BeginWaitForConnection(new AsyncCallback(WaitForConnectionCallBack), pipeServer); | ||||
| 				Listen(); | ||||
| 			} | ||||
| 			catch | ||||
| 			{ | ||||
| 				return; | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Rich
					Rich