我想创建一个连接到另一个软件的软件,并通过互联网将一些数据(基于文本)发送到另一个程序。
软件每300毫秒发送一次数据(使用定时器),接收器必须按时接收数据。
连接可以类似于以下
我认为它可能类似于视频会议软件,但只使用简单的文本作为数据。
任何人都可以告诉我如何制作这样的节目,特别是
我计划用Delphi做这件事但其他建议也欢迎。
========================== update1 =================
是否可以通过流发送图像
答案 0 :(得分:3)
我建议使用UDP协议并为您的数据添加时间戳信息,并跟踪接收端的传入数据。您可以使用Indy或其他软件包中的UDP服务器(TIdUDPServer)和客户端(TIdUDPClient)组件。客户端组件用于发送数据和服务器以进行接收。
就我个人而言,我通常更喜欢Synapse -classes。它们比Indy低,因此更容易知道发生了什么,但另一方面,你可能需要自己实现Indy默认提供的东西。
<强>更新强>
实施非常简单:
发送数据:
在表单上删除TIdUDPClient。将“Host”设置为接收端的名称或IP地址(如果在同一台计算机上运行程序,则为“localhost”),并将端口设置为服务器正在侦听的高位数,例如54656。
将以下代码添加到按钮或计时器事件:
IdUDPClient1.Send('Hello, world!');
接收数据:
在表单上删除TIdUDPServer组件。将默认端口设置为与发送应用程序中相同的端口。添加OnUDPRead事件处理程序,代码为:
MessageDlg('Received: ' + StringOf(AData), mtInformation, [mbOk], 0);
每次收到新邮件时都会弹出新的邮件对话框。
更新2
UDP不适合图像,如果你想确保它们保持不受损坏,除非图像非常小并且适合一个数据包。
答案 1 :(得分:0)
除了Indy,我建议使用任何东西。它既有bug(特别是与Delphi捆绑的版本),也比其他组件集慢。它很容易理解并开始使用它,但是一旦你深入研究,你就会开始注意到小问题。 Indy一直处于开发阶段,您可以找到最新版本here。问题是,由于一些硬编码的依赖关系,你不能轻易地在2009年以后用Delphi版本中的新版本替换捆绑版本。
Delphi几乎没有集成其他网络通信方法,但我建议探索第三方组件。首先,如果你想要开源,你应该看看Overbyte ICS。它有点难以掌握,但它具有良好的性能和功能集。
作为一个非常好的商业解决方案,请查看IP^Works。我只是抓了它,但从我看到的,我可以全心全意地推荐它。