项目需要我的web应用能和远程机器上的applet应用建立双向通信的长连接,web应用可以主动向远程applet应用发送数据,也可以被动接收远程Applet发送的数据,希望各位高人能指点一二,不胜感激!补充:这个applet应用用于采集终端硬件的数据,已经完成,不能改了。

解决方案 »

  1.   

    怪我没说清楚,已经写好的数据采集系统没办法更改了,但对方可以加交互程序,我现在的问题就是不知道怎么才能和对方的Applet应用进行双向长连接通信。再次请教!
      

  2.   

    对,实际上就是这样一个情况,对方对j2ee不是很了解,他提议用socket,可socket需要独立启动,我实在不明白怎么tomcat下面再起一个serversocket或socket;另外socket好像也是请求/应答模式吧?
      

  3.   

    socket,做个自启动servlet里面启动socket监听,applet作为连接发起方和servlet里面启动的服务建立长连接,这样就满足你需求了
      

  4.   

    当然可以,看哪一端做服务端,哪一段做客户端
    1.SOCKET编程就可以解决,楼主想要我可以给你示例代码
    2.webservice,soap协议,就是可以远程进行进程间通信(两个JAVA虚拟机通信),网上有很多简单的实例。建议用成熟的SOAP协议实现的JAR包。通常有AXIS、XFIRE等,建议使用XFIRE,因为配置简单些,网上资料也很多
      

  5.   

    先谢谢各位,如果用socket,我这边建立服务器端,对方applet应用发起连接并连接成功,那我作为服务器端可以主动发送数据吗?还有,我作为Socket服务器端的话监听哪个端口?8080?另外就是accept方法会不会阻塞主线程?我说的有点乱,想到哪说到哪,其实我对socket也不是很熟悉。希望能得到各位更多的宝贵意见。
      

  6.   

    1.服务端当然可以主动发送数据给客户端,只要之间的socket对象还在
    2.监听的端口只要不和其他计算机进程服务用的端口冲突都可以,不要大于65535
    3.accept会阻塞线程,如果用主线程跑当然会阻塞主线程,如果主线程有其他用途,就new一个新的线程当服务端
      

  7.   

    兩邊各一個SERVER和CLIENT,處理起來複雜點,但能滿足要求。
      

  8.   

    你这个问题跟我的很相像,我是把监听类随servlet启动,用双线程管理读写,进程间通信,来解决这个问题。目前只是初步调试出,楼主可以参看一下我的监听socket的方法。http://topic.csdn.net/u/20091107/11/f0cc790c-c1ff-4d47-a59e-7c04156921e0.html?32584#replyachor
      

  9.   

    用socket应该可以解决吧
    网上搜搜很多例子的
    先看看11楼的方法
    顶顶
      

  10.   

    11楼的方法是Socket编程过程,我现在困惑的是Socket程序怎么在tomcat中运行并保持长连接。因为看了需求,是我的web应用进入主界面之后,首先主动向applet发起请求,然后是applet不定期回传数据,所以我想把socket服务器端放在applet这一边,这样的话web系统就得运行socket客户端,这里不知道怎么实现,网上找了好久也没有这样的例子,哪位能提供一个启动方案,最好是配置和代码,不胜感激。
      

  11.   

    Socket长连接和TOCMAT没什么关系的,建议看下SOCKET基础,SOCKET建立连接后不主动断开连接就不会断开,SOCKET开一个通道TOMCAT的HTTP开一个通道相互不影响,放在TOMCAT中间启动只不过可以共享内存。socket服务器端当然是放TOMCAT端的,不然你怎么知道applet的IP?,肯定是由applet发起连接请求的。