我们都知道通过url(协议是:http),可以访问远程的对象,如:文件等等。
我们也知道通过socket(协议是:tcp),可以在服务端和客户端建立一个常连接,用于传递对象或其它的信息等等。
现在的问题是:
    我们怎样可以通过url,从客户端(通常是一个Applet)去访问位于服务端的一个实例进程,并且可以通讯。(当然可以是一个常连接,也可以是一个一次性的连接)。
这非常类似servlet的工作方式,不过servlet返回客户端的浏览器而且返回主要是html文本。

解决方案 »

  1.   

    就直接用Applet通过socket与web server 中的某个进程(此进程为server socket)进行通讯不就完事了吗,我做过一个东西,就是这样做的
      

  2.   

    我想我们在这里讨论不是解决具体问题而是技术上的讨论!
    你说呢?bgold.
    对于socket方式我认为没有什么不好,我编的大多数程序也是基于socket的,那么怎样将你原来用socket实现的内容用URL实现,这是我展开这个讨论的主要目的。当然你也可以发表一些其它关于网络编程的看法,只要是对大家编程有帮助的我都会给诸位加分的。踊跃发言吧!
      

  3.   

    那位朋友用applet通过url和服务器实现了动态的信息交换(包括对象)。
      

  4.   

    我用的urlconnection,算不算?用socket服务器端需要一直运行去8080端口读数据,用URLconnection就直接调用了。
    小弟初学java,请大家指教。
      

  5.   

    我用Applet调用服务器端的8080端口下的Servlet,通过servlet查询数据库,然后返回值给Applet,servlet关闭,是一次性连接。用Socket做的我不知道怎么调用,只能做一个循环不停地在服务器运行,也能调用吗?大虾请指教。
      

  6.   

    dear robber ,do you know RMI & Jini(base on RMI) ? 
    I suggest you take a look following url :
    http://java.sun.com/rmi
    http://java.sun.com/jini
      

  7.   

    rmi我知道阿,rmi也是基于tcp的啊!比如要指定端口号等。其实我的目的是利用http协议来进行信息交换!这样就不用使用一个其它的端口号了,因为其它的端口好在www上不一定能够通讯,比如通过www代理,而代理可能只能接受80端口。
      

  8.   

    我觉得,只要Srever跟Client都是自己写的,爱怎么玩都可以。
    定义一个自己的协议就可以了。
      

  9.   

    可是Server端口号是被web Server占用的啊!
      

  10.   

    如果要用http,那么http是个无状态stateless的协议,用途很受限制。:)
      

  11.   

    to robber:
    Jini是什么东东?
      

  12.   

    具体我也不清楚!
    是一种和DCOM,CORBA技术类似的分布式计算技术!
      

  13.   

    Jini一种很有前途的技术
    《Jini核心技术》机械工业出版社
      

  14.   

    hi,robber ... 请问,你提出的问题里的web server可以是自己做的吗?我怕做出来的client净说些server听不懂的话,hohohoho ~~~
      

  15.   

    web server 是可以自己编写,可是好像意义不大!
      

  16.   

    "... 用applet通过url和服务器实现了动态的信息交换(包括对象)。"
    我现在还只能想出这样的办法,借助序列化的特性,applet和server通过共享数据库的方式进行信息交换(应该可以包括对象)
    --
    @o@ ... 跑题了?是不是还没能理解你的意思? 但我觉得多讨论讨论很有意思:)
      

  17.   

    用soap,结合http和xml,可以做到跨平台跨语言访问。
    微软的下一版Visual Studio就全建立在soap上。apache也推出了支持soap的java语言包。
    在http://xml.apache.org/soap,在tomcat上应用,也可以用在jrun和IIS上。
    而且这个包是源代码开放的。可惜没什么文档,得自己去摸。
    我也是刚开始看。
      

  18.   

    Dureek:
    其实这也是一种方法!不过当传送的对象类型太多,编程序就比较复杂了,其次安全性也不高。
    soap:传送xml是一个好方法,不过客户端侧计算量和安全也是问题!----------------大家在讨论讨论!---------------
      

  19.   

    有时候我觉得Rober的回答象放屁,不能解决问题,又不能引导问题的解决!
    我不知道Robber编过多少Java代码和应用!?我希望“专家门诊”能够为大伙解决问题!
      

  20.   

    唉,有个原始的办法,就是将可以串行化的对象直接序列化过去,这样就可以用http了,除了浪费带宽,有些对象不适宜,还可以对付一下。大家集思广益,能回答问题最好,不能的话也提供一些思路也很好啊。:)
    oicq: 1766598
    mail: [email protected]
      

  21.   

    ajunchen:请注意你的言语,如果你真的能够解决问题不妨试着回答,不会就不要进行人身攻击。OK!
      

  22.   

    robber,可以改写序列化的方式啊,比如加入zip(稍微缓解一点点流量的问题)和加密(安全性)的功能,hehehe ... 处理速度可能会慢些,可是现在的机器这么便宜 ... :)
    哦,不知道你是不是精通网络编程,想顺便问问你在java里怎么发广播啊? 我在192.168.1.0/255.255.255.0里试了一下,向192.168.1.255发送DatagramPacket,结果(好象)只有自己的机器收到了:( 这么说不正确,我的意思是至少有好几台机器都对广播(可以这么说吗?)视而不见 :( 在linux下ping广播地址也就1,2台能收到 ... 是网络的问题吗? java不适宜搞比较底层的东西, 我只是顺便问问而已,hohohoho ...
      

  23.   

    我问了一下C高手,你应该可以ping 192.168.1.255 or 192.168.255.255.
    我没有试过噢!
      

  24.   

    有一点不太明白,servlet不正是通过URL访问的么?
      

  25.   

    applet可以通过url的形式和servlet交流的啊, 另外还有一个(我也没试过:p),就是用ClassLoader来更加直接的同servlet交流——应该是可以的吧?
      

  26.   

    受不了了:(
    robber,我的oicq是2043462,直接交流吧,hehehe :)
      

  27.   

    Dureek:
    不好意思我载公司不能使用icq,都是该死的WG.
    你和我可以邮件联系。[email protected]
      

  28.   

    如果WG是WinGate的话 ... 可以开个口儿的吧?hohohoho ... 可能我以后也不用啦~
    这段时间会非常的忙,有机会一定向你请教 :)