我想实现网页上点击某个按钮就用发送udp数据给服务器,不知道js可以实现吗,如果不行有没有什么好的方法来实现,谢谢了大家

解决方案 »

  1.   

    记得做毕业设计的时候找到了一个Flash框架叫aflax,里边封装了一些TCP操作功能,你可以看下是否能用
      

  2.   

    to net_lover:
    能否详细一点,之前没有做过类似的东西,插件用什么来写,用VC写activex插件可以用吗??
    我直接调用的winsock插件,不可以的,
    挺奇怪的,代码请看:
    代码1:
    var sendata;
    var sock = new ActiveXObject("MSWinsock.Winsock");
    sock.Protocol = 1;
    sock.RemoteHost = "192.168.3.251";
    sock.RemotePort = 57298;
    sock.LocalPort = 57298;
    sock.Bind(57298);sendata = "Hello!!!";
    sock.senddata(sendata);
    sock.close(); 我将代码1保存为:“test.js”直接运行,是可以发送udp数据的,但是我将代码1嵌入到html网页中,在网页中点击按钮调用就不可以,以下是html的代码:代码2:
    <html>
    <head>
    <script language=javascript>
     test_send(){ 
       var sendata;
       var sock = new ActiveXObject("MSWinsock.Winsock");
       sock.Protocol = 1;
       sock.RemoteHost = "192.168.3.251";
       sock.RemotePort = 57298;
       sock.LocalPort = 57298;
       sock.Bind(57298);   sendata = "Hello!!!";
       sock.senddata(sendata);
       sock.close(); 
    }
    </script>
    </head>
    <body>
     <form name="myform">
     <input type="button" name="tstbtn" value="发送测试" onClick=‘test_send();'>
     </form>
    </body>
    </html>点击按钮时一直显示网页有错误,
    请教啊,谢谢啦
      

  3.   

    to xingqiliudehuanghun:
    谢谢,我现在正在了解aflax,看看能否有帮助
      

  4.   

    不知道你是什么错误,找到错误所在就好解决一点了我看了下 你写的JS方法,貌似格式不对
    <script language=javascript>
     function test_send(){  
      var sendata;
      var sock = new ActiveXObject("MSWinsock.Winsock");
      sock.Protocol = 1;
      sock.RemoteHost = "192.168.3.251";
      sock.RemotePort = 57298;
      sock.LocalPort = 57298;
      sock.Bind(57298);  sendata = "Hello!!!";
      sock.senddata(sendata);
      sock.close();  
    }
      

  5.   

    恩,确实是我贴错了,代码是写对的,还是同样的问题,ie报错为:automation服务器不能创建对象,该对象是针对:var sock = new ActiveXObject("MSWinsock.Winsock");这句代码的,是不是html网页中就不能创建winsock对象啊,那要实现怎么办呢??
    自己顶一下
      

  6.   

    哎……研究了好多天了,发现困难重重啊,总结一下吧:目的:想在网页上点击一个button就发送数据给服务器(用udp的方式)服务器架构:
    有一个tcp接口专门用于http的传输,所以可以用web的方式来访问它。还有一个udp接口来传输具体的数据。想实现的方式是:
    客户端(PC)用web的方式访问服务器,服务器把自己的内部数据更新到web上并给pc端;
    用户在pc端可以浏览服务器的内部数据并且可以修改,修改之后点击一个button可以以udp的方式发给服务器,服务器接收到修改过的数据之后更新自己。
    也就是一句话:tcp只传网页的代码;udp是数据通路。代码和数据分开的思想(也不知道这样对不对,呵呵)但是问题来了:
    js,vbs都不支持socket(其实是支持的,甚至winsock都可以,单独写一个脚本直接运行是可以的,但是嵌入到网页中用按钮触发就不行),上网搜了一下,说是socketjs可以,还有xingqiliudehuanghun朋友说的aflax我也研究了一下,不管是socketjs还是aflax,实现原理都是一个,就是网页中嵌入一个flash文件,调用flash的socket来发送数据,但问题又来了……flash的socket不支持udp,目前只支持tcp……哎,看来这个架构只能胎死腹中了……发这个总结的目的:
    希望后来的朋友能少走弯路,当然如果有哪位高手曾经做过并且已经解决了的也希望能够指点小弟,多谢多谢
      

  7.   

    单独写一个脚本直接运行是可以的,但是嵌入到网页中用按钮触发就不行
    ------
    UDP和HTTP是两回事。网页是运行在HTTP机制中的,怎么可能劈腿?你单独运行它,是用了WIN系统里的脚本宿主程序去解释运行的,相当于解释型的程序,和网页走的不是一条道,走的是软件的路子,所以能走通。这个,你要么放弃,要么在服务器端用后台实现UDP,前端去调用后台。或者借用FLASH(它在这方面实际也如上面所说一样,不是走的HTTP协议)。
      

  8.   

    to theforever:
    恩,终于理解了htttp的意思……
    服务器后台是可以实现udp,关键是客户端以什么样形式发送udp,关键想让用户的感觉是网页按钮来触发udp的数据发送,看来flash是唯一的选择,虽然以软件的形式发送,但却给用户直观的感觉是网页在操作一切,而flash只能发送tcp,我目前就是把服务器的后台udp接收代码换成tcp,开一个tcp的连接只接受数据,谢谢了
      

  9.   

    应该是IE没有加载你要用到的插件,所以不能new对象了。调整IE的安全限制,使其自动加载不安全的Activex插件和运行不安全的activex插件
      

  10.   

    这个,你可以用restful接口来在前端开发嘛,发送的时候给服务器用xml形式来传数据,应该很容易搞定,走的是http的路子。