随笔 - 10  文章 - 35  trackbacks - 0
<2007年6月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(3)

随笔档案

文章分类

文章档案

C++

linux application

linux develop

shell

tools

搜索

  •  

最新评论

以前总是为设备与服务器..客户端与服务器之间的布署烦恼..
以前不能跨网域布署..要么都在局域网内..要么都在公网上..必须都得在同一个网段
如果跨网段的话.服务器就不能向设备或客户端主动发消息了..
今天和同事讨论了一下..虽然前面也没得到想要的方案..但最后突然想到一个办法

让Client  -- >> Server 主动建立两个连接(不同端口)
A 连接负责 Client  --> Server 主动通信
B 连接负责 Server -- > Client 主动通信..
这样就能保持客户端在局域网内.服务也能主动通信了..不过B连接必须得是个长连接.

不知道这是不是最好的办法
posted on 2007-06-29 16:54 崔少伟 阅读(791) 评论(11)  编辑 收藏 引用

FeedBack:
# re: 刚刚想通了一个问题 2007-06-29 18:29 czxskell
Server -- > Client
是不是什么心跳服务器  回复  更多评论
  
# re: 刚刚想通了一个问题 2007-06-29 19:05 崔少伟
@czxskell
不是..只是通信的..也包括心跳吧..不过一般是Client主动向Server发心跳  回复  更多评论
  
# re: 刚刚想通了一个问题 2007-06-30 11:15 yuadam
这好象是二个server之间在通信呀  回复  更多评论
  
# re: 刚刚想通了一个问题 2007-06-30 12:46 崔少伟
server 也会主动发消息给client.  回复  更多评论
  
# re: 刚刚想通了一个问题 2007-06-30 16:27 eXile
可以这样,服务器提供一个对外的UDP端口,所有client都向服务器注册,并通过发送心跳保持alive。这条连接用于控制命令的传送,所有其它连接均在这条连接控制下创建。  回复  更多评论
  
# re: 刚刚想通了一个问题 2007-06-30 16:30 eXile
有一条主连接就可以了  回复  更多评论
  
# re: 刚刚想通了一个问题 2007-06-30 16:59 崔少伟
信令交互最好不用UDP了..设计起来比较麻烦..还要处理序列/丢包等问题...

一个连接也是可以的..就是实现起来比较麻烦..我感觉..
因为如果当C 向 S发消息..然后等待回应时..此时正好S也要向C主动发消息(不是刚才的回应消息)..这个主动消息就被C 截获当做是回应消息了..当然也可以通过消息ID来识别是主动消息还是响应消息..但这样的话就麻烦多了...  回复  更多评论
  
# re: 刚刚想通了一个问题[未登录] 2007-07-05 16:38 Andy
@崔少伟
呵呵,麻烦吗?其实做这种应用还是应该设计出一个规范的协议出来吧,你去看看CMPP协议或者SMPP协议,你的问题其实不是问题:)  回复  更多评论
  
# re: 刚刚想通了一个问题 2007-08-07 17:18 xxx
晕死,这也叫想通???
有B连接就够了!!!
你的服务器一定是公网上吧?既然"B 连接负责 Server -- > Client 主动通信..",那么Server <-- Client 一定可以啦...  回复  更多评论
  
# re: 刚刚想通了一个问题 2007-08-07 17:19 xxx
请记得:

TCP/IP是"全双工"的!!!  回复  更多评论
  
# re: 刚刚想通了一个问题 2007-08-28 12:43 shaovie
我知道你的意思..是用一个连接进行双向通信..
但会出现这种问题:
如果当C 向 S发消息..然后等待回应时..此时正好S也要向C主动发消息(不是刚才的回应消息)..这个主动消息就被C 截获当做是回应消息了..当然也可以通过消息ID来识别是主动消息还是响应消息..但这样的话就麻烦多了...   回复  更多评论
  

标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]

相关链接:
网站导航: