如何通过Internet在两个delphi应用程序之间转换数据?

时间:2010-11-30 19:30:30

标签: delphi indy

您好 让我明白我的问题。使用我的应用程序的两个人连接到互联网。两者都拥有彼此的IP,他们希望彼此聊天(比如Y!messanger)。 我想我需要使用Indy组件;对?我应该使用哪个组件? 提前致谢

4 个答案:

答案 0 :(得分:4)

你看过Indy's website上的任何演示吗?

答案 1 :(得分:3)

通常,您希望创建“客户端/服务器”类型的应用程序。谷歌快速搜索“indy客户端服务器示例”会产生大量结果,包括以下结果:http://www.devarticles.com/c/a/Delphi-Kylix/A-Real-World-Client-Server-Application-in-Delphi/

实际上,当您拥有具有私有IP地址的防火墙和NAT时,这会变得更加复杂。您将不得不考虑您的应用程序如何绕过或通过这些类型的技术。

答案 2 :(得分:3)

与斯科特所说的相似,我认为你最大的问题就是让他们互相交谈。我家中的计算机通过路由器,该路由器阻止来自因特网的所有传入连接请求(即,在两台计算机之间开始对话的请求)。我的计算机可以发送连接请求OUT,并以这种方式启动对话,但除非您修改路由器(端口转发),否则我的计算机无法接收连接请求。

您需要一个服务器,两个人都可以在这里连接,然后可以来回传递消息。要变得非常棘手,一旦与服务器建立连接,就可以将两台计算机直接联系起来,但这涉及UDP数据包和一些聪明的魔法。

答案 3 :(得分:2)

您不必使用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客户这样做。