ARM开发环境,移植webserver,没太多插件资源可以利用客服端通过浏览器登录以后,页面上有一个按钮,按下去以后产生onbuttondown事件,执行一个函数,请问有什么方法能通过这个函数实现socket通信?
或者有没有别的其他方法可以在web server上实现按一个按钮,可实现socket通信,多谢指教

解决方案 »

  1.   

    如果是跟flash相结合,貌似需要web server这边支持,请问有没有其他方法,只要能实现功能就好,按钮按下去,后台实现socket通信
      

  2.   

    用servlet调用socket方法,ajax调用servlet即可
      

  3.   

    通过与服务器端通信
    在服务器端调用socket
      

  4.   

    JS无法直接进行这个工作,必须通过交互由后台程序实际进行.
    交互,可以用AJAX无刷新实现,也可以用刷新的表单提交,按楼主情况自行决定.下面是一个简单的Socket通信例子:
       // 服务器端:ServerDemo.java
    package com.lanber.socket;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;
    public class ServerDemo {
        /**
         * 注意:Socket的发送与接收是需要同步进行的,即客户端发送一条信息,服务器必需先接收这条信息,
         *      而后才可以向客户端发送信息,否则将会有运行时出错。
         * @param args
         */
        public static void main(String[] args) {
            ServerSocket ss = null;
            try {
                ss = new ServerSocket(8888);
                //服务器接收到客户端的数据后,创建与此客户端对话的Socket
                Socket socket = ss.accept();
                //用于向客户端发送数据的输出流
                DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
                //用于接收客户端发来的数据的输入流
                DataInputStream dis = new DataInputStream(socket.getInputStream());
                System.out.println("服务器接收到客户端的连接请求:" + dis.readUTF());
                //服务器向客户端发送连接成功确认信息
                dos.writeUTF("接受连接请求,连接成功!");
                //不需要继续使用此连接时,关闭连接
                socket.close();
                ss.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
       // 客户端:ClientDemo.java
    package com.lanber.socket;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.net.Socket;
    import java.net.UnknownHostException;
    public class ClientDemo {
        /**
         * @param args
         */
        public static void main(String[] args) {
            Socket socket = null;
            try {
                socket = new Socket("localhost",8888);
                //获取输出流,用于客户端向服务器端发送数据
                DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
                //获取输入流,用于接收服务器端发送来的数据
                DataInputStream dis = new DataInputStream(socket.getInputStream());
                //客户端向服务器端发送数据
                dos.writeUTF("我是客户端,请求连接!");
                //打印出从服务器端接收到的数据
                System.out.println(dis.readUTF());
                //不需要继续使用此连接时,记得关闭哦
                socket.close();
            } catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }