.net写的服务端如何推送消息给delphi写的客户端

sinco449 2016-09-14 10:58:46
.net写的服务端如何推送消息给delphi写的客户端?
客户端的数量有2000多个。
考虑过在由delphi写的客户端创建一个TIdTcpServer,由它来监听并接收服务器推送过来的消息,但是客户端都是在局域网里通过路由器连接外网的,从外网看到客户端的IP地址和端口号实际上是由路由器映射的,映射出来的端口号不是固定不变的,这样服务器端就没办法连接客户端的TIdTcpServer。
如果由客户端定时去轮询服务器,时间间隔长的话,消息延迟。时间间隔短的话,服务器压力大。
...全文
1163 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
武稀松 2016-09-18
  • 打赏
  • 举报
回复
客户端用TCPClient,做长链接。用心跳维护活跃。 推送消息就是服务器给客户端发消息,除了推送消息外客户端接收大部分时间都是等待状态,每隔一个时间段发个心跳,告诉服务端,我还活着。 服务器就是给客户端发送消息,如果超时没有心跳就回收这个链接资源
老之 2016-09-16
  • 打赏
  • 举报
回复
你把服务端和客户端搞混了。delphi客户端,应该创建的是TIdTcpClient,连上服务端等待推送,接收数据并处理就行。服务端的端口是固定的,当客户端连上的时候会为客户端分配虚拟的端口来区分,一般是由服务端去轮询客户端。
lyhoo163 2016-09-15
  • 打赏
  • 举报
回复
1、使用TCP/IP标准,建立服务器和客户端连接,服务端可以主动发数据。 2、服务端要记录客户端的IP和端口地址,以便发送消息数据。 3、至于服务器能连接多少客户,取决于: (1)服务器程序占用内存要小;加大服务器连接的个数。 (2)服务器的连接宽度,服务器的CPU核数和线程数。 (3)服务器与客户端连接的数据大小。
  • 打赏
  • 举报
回复
服务端用TIdTcpServer,客户端建立连接后,服务端也可以主动发数据的。
tanqth 2016-09-14
  • 打赏
  • 举报
回复
引用 3 楼 sinco449 的回复:
TCP/IP能维持多少个连接?
那得看你服务端程序写得怎么样了,同时还看你的服务器本身。
sinco449 2016-09-14
  • 打赏
  • 举报
回复
TCP/IP能维持多少个连接?
tanqth 2016-09-14
  • 打赏
  • 举报
回复
只要都是用TCP/IP,不管你服务器是什么开发的,都行。需要在服务端开放一个端口(其他客户端能访问,不管客户端是不是内网),服务端记录下客户商的访问IP与端口(如果必要,需要记录客户ID),这样服务端就可以给客户端发送信息了。多年前就用这个做过与JAVA服务端的通讯。

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧