这个问题很高深啊,发到Web Services/XML板块可能会比较好。

解决方案 »

  1.   

    congliu(取次花丛都不顾,半缘修道半缘君。) 
    能否说得详细点?
      

  2.   

    这种东西本质上就是不可能实现的。如果这两个协议都走TCP或者都走UDP。那么是绝对不可能让你实现两个daemon监听同一个端口,这是TCP/IP的硬性规定,而且TCP的包转发都是通过系统实现,用户没有改动的权利。
    而且端口从1000-65535你都可以用,干吗要塞到一起?方便?
    看看tcp/ip祥解吧。
      

  3.   

    楼上,我是这样想的:
    将XML-RPC改到7000端口,SOAP使用8000端口。写一个Socket程序在8080端口监听,若是XML-RPC请求则新建一个连接到7000端口(需要实现负载均衡,所以可能不是本机的7000端口),同样,如果是SOAP请求则定向到8000端口。如果是SOAP或者XML-RPC基于http没有什么问题,但是,如果是https呢? TCP层上是无法得到明文的,也就无法分辨XML-RPC还是SOAP。这是问题所在。
      

  4.   

    另外,两个程序在同一个端口上监听也不是完全没有可能,只要在binding的时候允许重绑定就可以了,这也是很多木马的原理。
    如果改动数据包也不是没有可能,Windows用NDIS,或者Raw Socket, Linux上用Libpcap或者Netfilter都可以。
      

  5.   

    应该没关系啊,用上下文根来区分不同的应用.在web.xml里面加入servlet.
      

  6.   

    To:peihexian(知其然.知其所以然) 
    咱能不能写点正常的程序……你能在你发布的软件里面放一个木马?
      

  7.   

    peihexian(知其然.知其所以然)因为在winsock的实现中,对于服务器的绑定是可以多重绑定的,在确定多重绑定使用谁的时候,根据一条原则是谁的指定最明确则将包递交给谁,而且没有权限之分,也就是说低级权限的用户是可以重绑定在高级权限如服务启动的端口上的,这是非常重大的一个安全隐患。----引用网上一篇文章。首先谢谢你让我知道winsock的一个特性(这种特性是不是在linux下面也有我不大知道)
    不过再次BS一下microsoft不按道理出牌,不做标准的socket这种做法。