Время другой машины - PullRequest
3 голосов
/ 12 июня 2011

В c # при использовании DateTime.Now значением свойства является текущая дата и время локального компьютера. как узнать время другой машины с IP-адресом или именем машины

Ответы [ 3 ]

3 голосов
/ 12 июня 2011

Вы можете достичь, написав сервис, который дает вам текущее время?или подключение к удаленной машине и отправка запроса wmi

Подобный вопрос: http://social.msdn.microsoft.com/forums/en-US/netfxremoting/thread/f2ff8a33-df5d-4bad-aa89-7b2a2dd73d73/

0 голосов
/ 03 сентября 2013

Вы можете получить его на C # без WMI

using System;
using System.Collections.Generic;
using System.Diagnostics;

namespace RemoteSystemTime
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                string machineName = "vista-pc";
                Process proc = new Process();
                proc.StartInfo.UseShellExecute = false;
                proc.StartInfo.RedirectStandardOutput = true;
                proc.StartInfo.FileName = "net";
                proc.StartInfo.Arguments = @"time \\" + machineName;
                proc.Start();
                proc.WaitForExit();

                List<string> results = new List<string>();

                while (!proc.StandardOutput.EndOfStream)
                {
                    string currentline = proc.StandardOutput.ReadLine();

                    if (!string.IsNullOrEmpty(currentline))
                    {
                        results.Add(currentline);
                    }
                }

                string currentTime = string.Empty;

                if (results.Count > 0 && results[0].ToLower().StartsWith(@"current time at \\" + machineName.ToLower() + " is "))
                {
                    currentTime = results[0].Substring((@"current time at \\" +
                                  machineName.ToLower() + " is ").Length);

                    Console.WriteLine(DateTime.Parse(currentTime));
                    Console.ReadLine();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.ReadLine();
            }
        }
    }
}
0 голосов
/ 12 июня 2011

Нет встроенного способа сделать это.Вам нужно будет попросить машину сообщить вам время по некоторому протоколу связи.Например, вы можете создать службу WCF для запуска на другом компьютере и предоставить контракт на обслуживание для возврата системного времени.Имейте в виду, что из-за сетевого скачка будет некоторая задержка, поэтому время, в течение которого вы вернетесь, будет устарело на некоторое количество миллисекунд (или секунд в зависимости от скорости соединения).и грязный способ сделать это, не требующий .NET или чего-то особенного, работающего на другом компьютере, вы можете использовать PSExec .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...