// public static List<AvailablePort> DevicesLists = new List<AvailablePort>(); // Maybe list of All sockets'll be here, but I think it's not good option. #endregion #region Methods #region Send public static CommunicationResult Send(byte[] dataPackages) { CommunicationResult retval = CommunicationResult.Success; try { IAsyncResult result = ControllerSocket.BeginConnect(ControllerEndPoint, null, null); bool success = result.AsyncWaitHandle.WaitOne(commTimeOut, true); } catch { ControllerSocket.Close(); ControllerSocket = null; retval = CommunicationResult.ConnectionOpenFailed; } if (ControllerSocket.Connected) { List <byte> requestBuffer = new List <byte>(); int packageCount = 0; // add network communication ID code requestBuffer.AddRange(IDcode.GetAddressBytes()); // add 4 bytes with command bytes count packageCount = dataPackages.Length; requestBuffer.AddRange(BitConverter.GetBytes(packageCount)); // add command bytes requestBuffer.AddRange(dataPackages); // write create file data ControllerSocket.Send(requestBuffer.ToArray()); } else { ControllerSocket.Close(); ControllerSocket = null; retval = CommunicationResult.ConnectionOpenFailed; } return(retval); }
public static CommunicationResult Receive(out byte[] responsePackage, out int responseLength) { CommunicationResult retval = CommunicationResult.Success; responsePackage = new byte[1024]; responseLength = 0; responseLength = ControllerSocket.Receive(responsePackage); responsePackage = PreapereReadPackage(responsePackage, responseLength).ToArray(); responseLength = responsePackage.Length; ControllerSocket.Close(); ControllerSocket = null; if (ControllerSocket.Connected) { retval = CommunicationResult.ConnectionCloseFailed; } return(retval); }