[问题点数:100分,结帖人CSDN]
等级
本版专家分:152
结帖率 100%
系统原先使用XML-RPC(Apache),现在需要添加SOAP(Axis),要求两种协议共用8080端口。
如何实现?也许用Socket写一个协议识别的Dispatcher能行。但如果SOAP或者XML-RPC基于https怎么办?
展开阅读全文
等级
本版专家分:13145
勋章
黄花2005年8月Java大版内专家分月排行榜第二
在服务器上加上一个deamon
等级
本版专家分:1130
这个问题很高深啊,发到Web Services/XML板块可能会比较好。
等级
本版专家分:152
congliu(取次花丛都不顾,半缘修道半缘君。)
能否说得详细点?
等级
本版专家分:1806
勋章
蓝花2004年9月C/C++大版内专家分月排行榜第三
这种东西本质上就是不可能实现的。如果这两个协议都走TCP或者都走UDP。那么是绝对不可能让你实现两个daemon监听同一个端口,
这是TCP/IP的硬性规定,而且TCP的包转发都是通过系统实现,用户没有改动的权利。
而且端口从1000-65535你都可以用,干吗要塞到一起?方便?
看看tcp/ip祥解吧。
等级
本版专家分:152
楼上,我是这样想的:
将XML-RPC改到7000端口,SOAP使用8000端口。写一个Socket程序在8080端口监听,若是XML-RPC请求则新建一个连接到7000端口(需要实现负载均衡,所以可能不是本机的7000端口),同样,如果是SOAP请求则定向到8000端口。如果是SOAP或者XML-RPC基于http没有什么问题,但是,如果是https呢? TCP层上是无法得到明文的,也就无法分辨XML-RPC还是SOAP。这是问题所在。
等级
本版专家分:152
另外,两个程序在同一个端口上监听也不是完全没有可能,只要在binding的时候允许重绑定就可以了,这也是很多木马的原理。
如果改动数据包也不是没有可能,Windows用NDIS,或者Raw Socket, Linux上用Libpcap或者Netfilt