2013-03-31 49 views
0

我有兩個程序所以如果我在機器A上有一個程序「本地」而在機器B上有另一個「遠程」,程序「本地」如何找出它們是否都在同一個程序上運行機器或Windows環境下的c + +中的不同機器。一個程序對應另一個C++的位置

+0

您需要提供更多信息。除非你已經建立了一種溝通方式(這肯定能夠揭示它們是否是本地的),他們怎麼才能「相互認識」?或者你只是想知道「是我的應用程序在這臺機器上運行?」 – tenfour

+0

實際上我已經在下面的評論中解釋了它基本上我需要的東西。 – networks

回答

1

將「self」的IP地址從「local」發送到「remote」?或者讓「遠程」將其IP地址發送到「本地」。然後與「自己的」IP地址進行比較。如果它們相同,則必須是同一臺機器[或者機器有多個網卡連接到同一整體網絡]。

詢問一些其他機器特定的ID,如MAC地址,硬盤ID等

有無數不同的方法,可能會或可能無法正常工作,這取決於你實際上是試圖做。基於評論

編輯:

如果你想檢查程序可在同一臺機器上,你可以使用「命名管道」或一些其他命名IPC機制,並簡單地檢查命名IPC在本地機器上可用。如果不是,則使用遠程機器機制(例如TCP/IP)。

+0

我實際上正在尋找的東西,如果我有兩個程序發送數據到另一個,然後如果一個進程是本地的另一個他們將使用本地ipc方法,但如果他們remotly位於然後tcp/ip。所以我如何檢測有關該程序,然後使用它來決定使用哪種通信方法 – networks

+0

請參閱上面的編輯。 –

+0

好吧,所以基本上根據你的編輯你的意思是我應該在每個程序上運行一個命名管道,然後檢查是否在同一臺機器上..但我的其他程序不知道任何關於管道。因此,我必須發送管道姓名或身份證來檢查,我該怎麼做? – networks

0

我其實看來來往往的東西一樣,如果我有兩個程序發送 數據互傳,然後如果一個進程是當地另一個他們將 利用當地的IPC方法,但如果他們remotly位於然後TCP/IP。所以 我如何能檢測有關程序,然後用它來決定哪些 方法通信使用

先試本地IPC方法。如果他們不工作,切換到TCP/IP。

+0

但我不能先檢查,然後決定如何溝通。因爲我嘗試getpeername,但它需要連接在服務器端被接受,所以基本上連接已經開始,但我想在找到本地或遠程後啓動通信。 – networks

相關問題