2016-12-08 11 views
-1

私は奇妙な振る舞いに遭遇しました。私は、同じローカルネットワーク内の2台の異なるマシン上の送信者と受信者のサービスを持っているし、このオブジェクトを渡したい UdpClient 上:私はこのようにそれを作成C#DateTimeシリアル化の問題?

public class SendMe 
{ 
    public DateTime ExpirationDateUtc { get; set;} 
} 

return new SendMe { ExpirationDateUtc = DateTime.UtcNow }; 

をして、私はちょうどシリアライズを使用しますにBinaryFormatter 通過:

new BinaryFormatter().Serialize(stream, obj); 
return stream.ToArray(); 

とdeserializ受信側でエーション:

return (SendMe)new BinaryFormatter().Deserialize(stream); 

次何が起こるか私が時間差を取得するには、(UtcNowがグローバルタイムスタンプを与えるべきではない?)正確に7秒によります。

2台のローカルネットワークコンピュータでこのような時間差が生じる原因は何ですか?私はWin7とWin10を別々のローカリゼーションで持っています。

+4

両方のPCに同期クロックがあるかどうかを確認しましたか?すなわち、インターネット時間に同期 – Shameen

+0

違いは何ですか? – juharr

+2

明白な質問:この最小の例は実際に問題を再現しますか?第二に、あなたは7秒間にどのように計算されていますか?あなたはシステムAの「10:00:00」をコンソールにログオンし、システムBの「10:00:07」を読みますか?私はそれがそのコードの外か何か間違った "対策"だと強く思っています。あなたがローカル時計と比較すれば...よく... yku know ... –

答えて

2

コンピュータにはおそらく7秒の時間差があります。私の以前の仕事では、すべてのコンピュータの表示時間が異なり、5秒間の差があり、9秒間の差異もありました。明らかに、それらはすべて同じローカルネットワーク上にありました。 Shameenのように、同期していることを確認してください。

+0

はい、問題は正確に同期していました!私は両方のマシンを同期させ、問題は解決しました! – eocron

+0

良いもの@ eocron06。 –

関連する問題