嗨 讓我讓我的問題清楚。兩個人使用我的應用程序連接到互聯網。兩個人都有對方的IP,他們想與對方聊天(如Y!messanger)。 我想我需要使用Indy組件;對?我應該使用哪個組件? 在此先感謝如何通過互聯網在兩個delphi應用程序之間傳輸數據?
回答
通常,您正在創建一個「客戶端/服務器」類型的應用程序。快速Google搜索「indy客戶端服務器示例」會得到很多結果,其中包括:http://www.devarticles.com/c/a/Delphi-Kylix/A-Real-World-Client-Server-Application-in-Delphi/
實際上,當您使用私有IP地址的防火牆和NAT時,這會變得複雜得多。你將不得不考慮你的應用程序如何繞過或通過這些類型的技術。
你看過Indy's website的任何演示了嗎?
您不必使用Indy組件,只需要處理通過網絡進行通信的任何內容。任何HTTP或套接字網絡堆棧都可以。 Indy是Delphi Win32的事實標準。
要進行網絡通信,您需要在機器A上創建一個偵聽器對象或服務,並在機器B上創建一個發送者對象,以便將一條網絡消息從A發送到B.要將消息從B發送到A,您將還需要一個反向路徑 - 共有4個對象執行雙向通信。一些對象包裝器在內部隱藏了這個細節。我不記得Indy是否隱瞞了這一點。
如果您的計算機使用通用TCP/IP協議來加工通信(如HTTP),它可能會最容易。這將使得通過任意用戶之間經常存在的防火牆和代理獲得連接變得更加容易。爲了避免與任何一臺機器上運行的任何HTTP Web服務發生衝突,您應該使用IP地址爲192.168.1.10:12345的自定義端口號,而不是標準的HTTP Web服務器端口80.這是大多數IM客戶做的。
與斯科特說的相似,我認爲你最大的問題是讓他們互相交談。我家裏的電腦通過一臺路由器,它阻止來自Internet的所有傳入連接請求(即請求在兩臺計算機之間開始對話)。我的電腦可以發送連接請求OUT,並以這種方式開始對話,但除非您修改路由器(端口轉發),否則我的計算機無法接收連接請求。
您需要一個服務器連接到兩個人,然後可以來回中繼消息。爲了變得非常棘手,一旦與服務器建立連接,兩臺計算機可以直接聯繫,但涉及UDP數據包和一些聰明的魔法。
- 1. 通過互聯網在.net應用程序之間發送數據
- 2. 通過WM_COPYDATA在不同的Delphi版本應用程序之間傳輸數據
- 3. 如何在兩個Arduinos之間發送互聯網數據包?
- 4. 如何在兩個Chrome應用程序之間傳遞數據?
- 5. p2p文件傳輸通過互聯網
- 6. Android和C#之間的互聯網數據傳輸
- 7. 應用程序虛擬化:如何通過互聯網完成應用程序流式傳輸?
- 8. 使用文檔交互在我的兩個應用程序之間傳輸IAP
- 9. 如何通過互聯網更新.NET Windows應用程序
- 10. 如何通過互聯網部署Windows應用程序
- 11. 如何通過互聯網將Delphi連接到遠程MS Access數據庫?
- 12. 互聯網應用程序通信互聯網寬
- 13. 通過互聯網進行數據傳輸
- 14. 通過互聯網傳輸數據最簡單的方法,Python
- 15. 在兩個Azure應用程序之間傳遞數據
- 16. 在兩個iframe之間傳輸數據
- 17. 互聯網Web應用程序(j2ee應用程序)和Android移動應用程序之間交換數據
- 18. 通過互聯網與遠程應用程序傳輸數據的最佳方式是什麼?
- 19. 如何在兩個winform應用程序之間共享數據?
- 20. 如何在兩個python應用程序之間交換數據?
- 21. 在兩個應用程序之間傳輸數據的最佳方式
- 22. 在兩個TCP應用程序之間傳輸數據的問題
- 23. 如何通過互聯網
- 24. 黑莓應用程序不通過互聯網在設備上獲取數據
- 25. 測量互聯網數據傳輸
- 26. 如何通過燒瓶應用程序流式傳輸數據?
- 27. 如何從python腳本通過互聯網發送數據到android應用程序,反之亦然。
- 28. 使用WPF應用程序通過互聯網玩遊戲?
- 29. 如何在兩個應用程序之間進行通信?
- 30. MSMQ - 如何在兩個應用程序之間進行溝通
+1對於一劑現實。防火牆,代理,NAT。 – 2010-11-30 20:24:48
如果兩個程序都是由用戶直接控制的,互相擁有對方的IP,並且想要直接對話,那不是客戶/服務器;這是點對點的,而使它工作的技術是不同的。 – 2010-11-30 21:19:10