大家好,我现在已经有了一个服务器端,现在要做个客户端,客户端打开一个SOCKET连接后该怎么做呢?如何监听?比方说我在客户端得到一个用户名和密码信息,然后我打开一个SOCKET连接,发送给服务端,服务端接受信息后,去数据库核对,正确的就发送一个信息回来,那客户端如何监听有服务器端发来的信息呢?具体的步骤和思路大概是怎么样子的?谢谢了

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【duck991】截止到2008-07-16 15:58:30的历史汇总数据(不包括此帖):
    发帖的总数量:22                       发帖的总分数:380                      每贴平均分数:17                       
    回帖的总数量:11                       得分贴总数量:1                        回帖的得分率:9%                       
    结贴的总数量:14                       结贴的总分数:220                      
    无满意结贴数:3                        无满意结贴分:60                       
    未结的帖子数:8                        未结的总分数:160                      
    结贴的百分比:63.64 %               结分的百分比:57.89 %                  
    无满意结贴率:21.43 %               无满意结分率:27.27 %                  
    楼主加油
      

  2.   

    Socket clientSocket = new Socket("merlin", 80); 
    DataOutputStream outbound = new DataOutputStream(
    clientSocket.getOutputStream() );
    DataInputStream inbound = new DataInputStream( clientSocket.getInputStream()
    );一旦流建立了,一般的流操作就可以做了:outbound.writeBytes("GET / HTTP/1.0 );
    String responseLine;
    while ( (responseLine = inbound.readLine()) != null)
    {
    System.out.println(responseLine);

    outbound.close();
    inbound.close();
    clientSocket.close();
      

  3.   

    主要靠Socket.getOutputStream和Socket.getInputStream
      

  4.   

    底层通信,最好在TCP的基础上再封装一层协议比较好.
    如果不封装的话,就要用TCP短连接的形式了.客户端,其实并不是Socket的端口监听.而是输入缓冲区的监听,可以写一个线程,每隔几毫秒判断一下缓冲区是否有数据,有就读取出来.这样就可以了.要发送数据,记得要刷新(flush)缓冲区.
      

  5.   


    //服务端
     public synchronized void receiveRequest(Socket socket) { //String str){
            this.socket = socket;
            try {
                //接收请求
                ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
                reception = (ArrayList) ois.readObject();            /**
                 *数据库核对方法
                   */            //服务端反馈发送
                ObjectOutputStream oos = new ObjectOutputStream(socket.
                        getOutputStream());
                oos.writeObject(rj.getsend());//rj.getsend()反馈的信息
                oos.flush();
                oos.close();
                ois.close();
                socket.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            //this.queue.add(reception);
            //this.queue.add(str);
        }
    //客户端
    public void login() {
            try {
                Socket socket = new Socket("192.168.0.1", 8083);
                //socket.setSoTimeout(1000);//设置连接超时
                 //发送请求
                 ObjectOutputStream oos = new ObjectOutputStream(socket.
                        getOutputStream());
                oos.writeObject(obj_send);//obj_send发送的数据
                oos.flush();
                da.removeValue();
                //接收服务端反馈
                ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
                ArrayList al = (ArrayList) ois.readObject();
                String jud = al.get(0).toString();
                if (info.equals(jud)) {
                    JOptionPane.showMessageDialog(null, "接受成功", "恭喜",
                                                  JOptionPane.INFORMATION_MESSAGE);
                }
                oos.close();
                ois.close();
                socket.close();
            } catch (Exception ex) {
                ex.printStackTrace();
                JOptionPane.showMessageDialog(null, "无法连接服务器", "错误",
                                              JOptionPane.ERROR_MESSAGE);
                System.exit(0);
            }
        }
      

  6.   

    客户端中的da.removeValue();扔掉咯
      

  7.   

    通过socket,获取InputStream,再readXXX()一次就行了
    Client-->  (socket) <--Server