Exemplo n.º 1
0
        private static byte[] ConvertLocationSubmitDataToByteArray(LocationSubmitModel obj)
        {
            byte[] data;
            using (var ms = new MemoryStream())
            {
                Serializer.Serialize(ms, obj);
                data = ms.ToArray();
            }

            return(data);
        }
Exemplo n.º 2
0
        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());
                }
            }));
        }