一个页面20秒读取一次socket发送的数据,但是这个socket是每5秒发送一次数据(应用程序)
当我加载页面,读取Action,socket连接成功,程序解析,这个时候就没页面的事了,因为它是20秒加载一次
但是服务端的程序是5秒发送一次的数据,所以Action 下的socket还是按照5秒钟解析一次数据,这个时候就有问题了页面的请求解析和服务器端发送的数据迫使客户端解析
然后我的程序就报异常,怎么样解决这个问题?用线程吗?
不知道我清楚了吗?

解决方案 »

  1.   

    1.实时读取socket的数据,而不从数据库读取,
    2.Delphi写的应用程序,也就是Socket的服务器端,当有也有把数据存入到数据库
    3.页面每20秒读取一次应用程序,但是应用程序是每5秒发送一次数据有说明白吗?
      

  2.   


    看懂了。楼主应该把这个帖子发到 Delphi 版。
      

  3.   


    但是Delphi 写的应用程序已经成型了,也就是说和它没什么事现在主要是Java这边的事
      

  4.   

    只要保证socket的连接不断掉,20s读一次应该可以读到所有内容。
      

  5.   

    20S确实是可以读取完所有数据,并且我还根据卡号去数据库读取相应的用户名页面每20S发送一次连接,也就意味着每20S都需要重新打开一次Socket
    那现在有没有什么办法能一直保持连接的状态,也就是说,当服务端段发送数据给的我的时候,
    我就直接显示在页面上?
    而不想请求-刷新-响应
      

  6.   

    你说的那是客户端监听根据服务器端模式,如果是B/S架构我还没见过能这样做的。C/S中如果提供相应的api应该可以做到。不过要有监听机制。
      

  7.   

    就像你所说的,C/S确实是可以,做Delphi认为也可以一直保持连接的状态,还被他鄙视说B/S也太弱了
      

  8.   

    还是不知所云.现在大部分提问者在提高编程技巧以前,是不是该把语言沟通能力提高呢?
    1、这个系统的目的是什么?
    2、这个系统包含那几个部分?
    3、每个部分是如何输入输出的? 
    LZ的回答是:(括号里是我加的)
    1.实时读取socket的数据,而不从数据库读取,(谁实时读取?Server端?Client端?)
    2.Delphi写的应用程序,也就是Socket的服务器端,当有也有把数据存入到数据库(怎么后头又冒出Java来了?Java是服务器端还是客户端?)
    3.页面每20秒读取一次应用程序,但是应用程序是每5秒发送一次数据 (页面是Winform还是Webpage?应用程序给谁发数据?)
      

  9.   

    如果你说是B/S的话,应该不太好解决。
    因为客户端的一次请求,web server会起一个线程,当相应结束后,线程也就消失。这时你在Action中建立的socket连接也就随之断开。
    所以,客户端每二十秒请求一次,每次请求,都会和socket server新建立一个连接,这时能取到的数据只是新建立连接后socket server发送的第一次数据。
    要解决这个问题有一个变法:就是另外与一个运行在web server上的常驻内存的进程,专用于接收socket server发送的数据,将接收到的数据存在DB中或文件中,这回每次请求直接去取相应的时间段的数据就可以了。希望这对LZ有帮助!
      

  10.   

    1.页面实时读取,那么页面就应该是相当于客户端
    2.Delphi写的应用程序,相当于服务器端,Java和它进行Socket通信,那么Java不就是客户端
    3.页面那是Jsp,Socket连接成功后,服务器端就是每5秒发送一次数据,发给java 客户端
    这回有说明白吧
      

  11.   


    Delphi干的事是每秒钟读取11个工厂的信息,然后存储到一个表里面,用于查询
    如果从数据库里面读,那样的话,数据就不是实时的了,
    所以说还是得需要从Socket里面进行读取
      

  12.   

    应该是这样说,存储到表里面的话,得需要一点时间,如果从表或文件里面读取
    就可能是10分钟或半小时前的数据了,表里面的数据,只是用来查询
    而Socket发送的数据用来实时显示的
      

  13.   

    刚才测试了下,同时开11个页面读取socket,就报错了这样的情况是不是考虑要用多线程了?
      

  14.   

    确实如你所说,5秒内能完成往数据库插入数据的操作但是100人同时读取数据库里面的数据,
    是不是没有这100人同时读取socket的速度快?
      

  15.   

    1.页面实时读取,那么页面就应该是相当于客户端 
    2.Delphi写的应用程序,相当于服务器端,Java和它进行Socket通信,那么Java不就是客户端 
    3.页面那是Jsp,Socket连接成功后,服务器端就是每5秒发送一次数据,发给java 客户端Delphi每5秒向java的Servlet发送数据
    Servlet把数据保存
    Servlet每20秒用保存的数据刷新jsp
      

  16.   


    Servlet可以有数据就发给Jsp,而保持连接不中断?
      

  17.   

    确实不知所云,不理解你的问题就无法提供参考。你的问题是不是这样:有个delphi程序每隔5秒得到数据存储到数据库中,另外有个WEB页面每隔20秒显示结果?Socket是Delphi端用的吧?