private static byte[] ConvertLocationSubmitDataToByteArray(LocationSubmitModel obj) { byte[] data; using (var ms = new MemoryStream()) { Serializer.Serialize(ms, obj); data = ms.ToArray(); } return(data); }
public async Task <ResultSuccess> SubmitLocations(string IP, int Port, ILocationSubmitModel _submitData) { return(await Task.Factory.StartNew(() => { try { var submitData = new LocationSubmitModel() { UserName = _submitData.UserName, Password = _submitData.Password, CurrentVersionNumber = _submitData.CurrentVersionNumber, Points = _submitData.Points.Select(a => new SubmittingLocationModel() { Index = a.Index, TimeStamp = a.TimeStamp, State = a.State, Lat = a.Lat, Long = a.Long, Accuracy = a.Accuracy }).ToArray() }; var data = ConvertLocationSubmitDataToByteArray(submitData); var LengthBytes = BitConverter.GetBytes(data.Length); if (BitConverter.IsLittleEndian) { Array.Reverse(LengthBytes); } data = LengthBytes.Concat(data).ToArray(); //IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties(); //TcpConnectionInformation[] tcpConnInfoArray = ipGlobalProperties.GetActiveTcpConnections(); //foreach (TcpConnectionInformation tcpi in tcpConnInfoArray) //{ // if (tcpi.LocalEndPoint.Port == Port) // { // //isAvailable = false; // break; // } //} //string hostname = "89.165.114.174"; //int portno = Port; //IPAddress ipa = (IPAddress)Dns.GetHostAddresses(hostname)[0]; //try //{ // System.Net.Sockets.Socket sock = new System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp); // sock.Connect(ipa, portno); // if (sock.Connected == true) // Port is in use and connection is successful // { // } // //MessageBox.Show("Port is Closed"); // sock.Close(); //} //catch (System.Net.Sockets.SocketException ex) //{ //} TcpClient client = new TcpClient(IP, Port); NetworkStream stream = client.GetStream(); stream.Write(data, 0, data.Length); var response = new byte[1024]; var bytesLength = stream.Read(response, 0, response.Length); var responseData = System.Text.Encoding.ASCII.GetString(response, 0, bytesLength); var resultDeserialized = JsonConvert.DeserializeObject <ResultSuccess>(responseData); client.Close(); return resultDeserialized; } catch (Exception err) { Log.Error("Submit Locations", err.Message + (err.StackTrace != null ? (", StackTrace:" + err.StackTrace) : "")); return new ResultSuccess(false, err.ProperMessage()); } })); }