碰到一个内存操作的问题,js能不能读内存指定的位置,该位置存储的数据会不断刷新,js也要获取该不断被刷新的数据,哪位高手有办法,帮帮忙!!!

解决方案 »

  1.   

    限制可真多,印象中JavaScript可以对C++调用的,那么读取内存中数据就有可能了,你网上查查。
      

  2.   


    要是能对c++调用,那调用c也一样,原来我也想这么做的,但找了好久也没找到调用c或c++的方法
      

  3.   

    将自己的代码封装到ActiveX中,然后用JS调用
    http://hi.baidu.com/huhe/blog/item/817a59ee1ca423f8b3fb95de.html
      

  4.   

    楼主调用ie的插件可能访问windows,其余的浏览器是不可以的
      

  5.   

    你这个不是读取某块内存的问题吧,你是要实时反馈升级进度!
    ajax方式2秒钟去服务器请求一次,看看安装到什么进度了,或者服务器推技术,保持长连接,在服务器端不断的输送出安装进度
      

  6.   


    我也想过ajax,但小弟不懂那个,而且goahead不知道能不能支持goahead,我们服务器就是c在擦写flash,就是看Ajax能不能读到c中的数据。Ajax想服务器请求的是什么?进度就一个数据就够了,我就是要把这数据到网页中显示就行,服务器堆技术还没听过呢。
    多学学!!!
      

  7.   

    vb中有AxtiveX控件好像可以解决问题,楼主可以了解一下!
      

  8.   

    通过xmlhttp来获取服务器返回的内存数!
      

  9.   

    javascript由各个浏览器厂商根据ECMAScript蓝本实现。
    Javascript < 浏览器 < 操作系统。首先你得清楚这种需求是不符合标准的,否则安全性何在 ?
    其次ie浏览器和windows系统同属于微软产品,所以ie可以通过某种方法和window系统交互,这完全是微软所为,你要是使用firefox,或者chrome,safari等等就没有这样的能力,况且我的系统还不一定是window呢,linux也大把人用。你要读内存,首先要知道浏览器是否提供了这样的api让javascript访问操作系统,通过操作系统才能操作内存,你搞清楚关系了吗?
      

  10.   

    你的需求比较怪异,照LZ的说法是要客户端的js去读取服务器端的内存,而服务器端的内存,在被一个用c写的程序(不知道是不是单机程序)在擦写东西,他要把这个擦写的进度给反馈给客户端。LZ,你是这个意思么?这样子的话,就不是js的问题了!而是如何让客户端与服务器端单机程序相互通信了!服务器端的单机程序要能主动的反馈擦写的进度,而不是让外界自己去取,例如,你卖手机,你应该主动去进货,而不是让货源主动找你求你进货,明白不!你没搞清楚主次!单机程序能反馈擦写进度之后,bs程序如何去获取呢,这又是个问题!据说WCF是解决不同类型软件之间相互通信的一个东西,可以去研究一下!
      

  11.   


           就是那个意思!
            我也明白那个主次关系,我的c语言中式把进度信息弄出来了,可是c不知道怎么把该信息在网页中来动态显示,于是我才想到用网页中的js去某个固定的地方读取该进度信息啊,然后升级时,文件系统被格式化,只能在内存中操作,于是我就像让c固定去写内存中一个位置,js去读那个位置就搞定
            如果在没有文件系统的情况下还有别的方法在网页中显示我升级的进度(该进度是c语言的擦写存储器进度,c语言完全知道),那我宁愿用别的方法
      

  12.   


    AxtiveX以前用过一些,都不支持,然后就没深究
      

  13.   


    总之就是要获取c语言中的数据,这个还不会,没接触过xmlhttp
      

  14.   

    可以用数据库去中转,也可以把这个进度保存为xml文件,放到web服务器目录下,这样,前台页面js通过ajax,每隔3秒钟去服务器请求一次,可以加载xml,也可以读数据库,然后把这个进度在前端显示出来!
      

  15.   


        我们做的服务端是Linux的,客户端去登陆网页的话随便客户用什么浏览器,就像我们去Google一样,(一般是ie),客户端能访问我的网页,能不能实时的显示我正在对服务端升级的进度,服务端在升级时是用c语言不断擦写nand flash的,升级的就是文件系统,先擦除旧文件系统,再写新的文件系统,在这个过程中我能不能在网页中显示它擦写的进度?
         我刚刚电子专业毕业,以前没接触过网页,稍微了解一些c,我想到的办法只有c把进度写在内存的某个位置,然后js去读这个位置,网上好多人说js不能读内存,我还是想问问。。
      

  16.   


    数据库也是一个文件啊,只要是关于文件的就不行,我是升级文件系统,到时文件系统都没了,文件也就不存在,保存为xml文件也不行的,只要是涉及到要用到文件的就不行。升级文件系统,相当于先把web服务器的硬盘被格式化,根本就没有目录了!
      

  17.   

    通过后台程序读取,用ajax回调
      

  18.   

    那么应该javascript(http请求)->后台程序->读内存->返回给浏览器,作为一个循环,即ajax轮询
    你需要部署个web服务,利用c(cgi),java什么的去读内存,然后利用javascript每隔1s向后台发送http请求。
      

  19.   

    顶,activeX还是不要用了。
    利用ajax去和后台交互才能做到浏览器的兼容。
      

  20.   

    可以先通过JAVA来读取内存中的数据  然后在用jquery的ajax来调用Java的函数  来读取函数中保存的数据   
      

  21.   


       就是你说的那样啊!我点击一个按键,然后先把新的文件系统上传上去,上传完成后先把新的文件系统加载到内存,然后把旧的文件系统格式化,然后进行文件系统的升级。就是要用网页去显示这个过程的进度!
       当旧的文件系统被格式化后,没有文件系统的这段时间,我的网页的代码已经加载到内存了,依然可以显示当前网页的,而且网页中的js也是在运行,我试过,关键的就是js怎么去获取进度信息,然后在该网页中把进度信息显示出来就ok
      

  22.   

    我的设备只用c操作的,连网页也是用c写的,Java我要弄进去的话我想问题还不知道会有什么情况。而且Java也没接触过。。
      

  23.   

    当旧的文件系统被格式化后,没有文件系统的这段时间,我的网页的代码已经加载到内存了,依然可以显示当前网页的,而且网页中的js也是在运行,我试过,关键的就是js怎么去获取进度信息,然后在该网页中把进度信息显示出来就ok你这个网页代码加到内存,是加到了你客户端机器的内存,这个时候,页面已经和服务器脱离关系了,也就是毫无关系!此时,你服务器端开始重新安装系统,格式化,你客户端已经和服务器端完全脱离关系了,你永远都不可能获取到服务器端的任何信息,因为文件系统都重新做了,网络自然都全部断开,此时的服务器就是一个孤岛,信息进不去,信息也出不来。唯一能看到的进度应该在那台服务器的电脑显示屏幕上,能看到现在干嘛。举个例子,在windows系统中,我正在远程连接服务器,我在远程中,点击了服务器的重启按钮,此时服务器开始重启,那么我和服务器的连接从此中断,只要服务器没启动好,且远程服务没打开,我就再也连接不上服务器了!lz你明白不!服务器都没了,谈何反馈数据给客户端!web程序的模式是异步的,不是同步的!每次只是去服务器请求信息,服务器受到请求之后,决定送给你看什么信息,你服务器系统都格盘了,网卡驱动都没装,linux系统都没了,服务器如同一个刚生的婴儿正在发育中,怎么告诉外界他长了多大了~~~也就他母亲知道,他在肚子里面到了什么进度了,也就是服务器本机的显示器上会显示些东西!
      

  24.   

    我看你这个需求很难解决了,整个文件系统在重装的时候,他如何与外界交互,系统都没有,那台机器最多能做的就是把信息显示在自己的显示屏上,他怎么去联网啊,怎么发送数据啊~除非你那用来格盘的c语言程序,能实现在格式化机器的时候,还能联网,且把数据送出来,而且必须送到一台web服务器上去,然后由这台web服务器吧信息反馈给客户端
      

  25.   

       这样也不行啊,我的服务器是一台,客户机可以是很多,都是通过网络来连的,不管是局域网还是万维网(现在是在局域网做的),客户机去升级服务器,先把要升级的新系统上传上去,然后上传完成的时候就去运行升级程序(因为我的网页也是c写的,这个很容易做到),然后主动权就交给服务器了,它在不停的做升级,这些通信都是建立在网络的,要服务器主动发送进度,那除非用用广播的形式向每台客户端都发个tcp的包,然后客户端去接收这个包。但是我担心的就是更新系统(升级)时网络是不通的。
       现在这种功能也是为以后预留的,现在都没有个升级的版本给我来测试,也不知道升级的时候会怎么样。反正我原来的做升级的网页(我是想的一般的小程序的升级)是建立在有文件系统的情况下的,现在他们要做这种功能我也只想到文件系统没了(硬盘被格了),就只能操作内存了,内存去取东西都不行!!
      

  26.   


    c和c++不都差不多?那些东西在功能上都能用c实现,何必再弄成c++,我们设备都是c写的,也不能就为这点就换成c++。
    要是汇编的话,那个就更麻烦了,我做的应用层的代码,而且有Linux系统,我连怎么换成汇编还不知道呢,不会是升级的时候我就用汇编去升级吧,那跟客户端用网页去获取进度也没多大关系啊,汇编要是再去调个HTTP协议tcp/ip协议的多麻烦呀,没见过汇编弄服务器的呢。。
      我感觉是没上面办法了,谢谢这位高手了。
      

  27.   

    LZ的老板是以桌面软件的操作思维去理解b/s操作的,真没办法的事。。
    通过客户端浏览器去控制服务器,这个真没什么好思路,因为浏览器只是索取的角色,服务器端有什么,它才可以请求什么,感觉现在是本末倒置了啊。
      

  28.   

    ajax去后台读值,再传出来行吗?
      

  29.   


    ajax我还不懂,也不知道怎么样
      

  30.   

    你这个担心纯属多余了,也自相矛盾.如果网络不通,端口是访问不了,那你用HTTP网页照样也访问不了,那个还不如端口通讯对系统的依赖度小.所以这是目前较好的方式了.
    其实到底是不是,因为你对你的升级情况到底如何讲得不是很细致清楚.所以客观限制是怎样的,一直不明确,只能朦朦胧胧这样说了.
      

  31.   

       感谢这位高手!这个就是要我升级Linux文件系统和内核,升级的时候也是先格盘,然后写新的内核和文件系统的代码,做成这样的话硬盘确实是没什么东西,光依靠内存也网络也不通,内存就120M的小设备。。然后我们就用其他的办法了已经模拟成功,正在测试稳定性和其他的小bug。。谢谢高手关照,一定记上你的分数,国庆快乐,国庆过后就一定给你加分。Thank you!
      

  32.   

    你网页也用c写的?cgi?貌似你的问题就是将后台的数据返回前台,用ajax吧,前台js跟后台数据交互,只做过java的,如果是CGI的应该也有向前台提供数据的方法吧,前台ajax请求这个方法
      

  33.   


       你也做过?goahead你最好去看下!!正常情况下数据返回的问题搞定,我的问题是文件系统升级(格盘)的时候,数据返回的问题