读书人

很奇怪的一个有关问题!

发布时间: 2012-09-06 10:37:01 作者: rapoo

很奇怪的一个问题!!!
部分代码如下:

Java code
System.out.println(1);listener=new portListener(2000);System.out.println(2);

结果,打出了1,却没有打出2,也没有报错,求解啊!!

全部代码如下:
Java code
package com.qqserver;/** *  *     服务器端: *     1,创建界面 *  2,服务器监听: 监听类 *    3,完成连接测试 *    4,实现"发送"按钮的监听 *  5,初步接受客户端信息 *  6,初步向客户端发送消息 */import java.awt.*;import javax.swing.*;import com.qquser.QQClient;import java.awt.event.*;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.*;public class QQserver extends JFrame implements ActionListener{    // 定义界面元素:一个按钮、一个输入文本框、一个显示文本框、一个滚轴、一个Jpanel    JButton button=null;    static JTextField textField=null;    static JTextArea textArea=null;    JScrollPane scrollPane=null;    JPanel jPanel=null;        // 定义监听端口对象    PortListener listener=null;        public static void main(String[] args) {                // 建立窗体对象        QQserver server=new QQserver(2000);    }        // 构造函数:初始化界面    public QQserver(int port){                // 初始化界面元素        button=new JButton("发送");        textArea=new JTextArea(13,10);        textField=new JTextField(12);        scrollPane=new JScrollPane(textArea);        jPanel=new JPanel();                // 组合添加到Jframe里的界面元素        //scrollBar.add(textArea);        jPanel.add(textField);        jPanel.add(button);                // 监听button        button.addActionListener(this);                // 添加组合元素到Jframe        this.add(scrollPane,BorderLayout.NORTH);        this.add(jPanel,BorderLayout.SOUTH);                // 设置窗体属性        this.setSize(400, 300);        this.setTitle("服务器端");        this.setVisible(true);        this.setDefaultCloseOperation(EXIT_ON_CLOSE);                System.out.println(1);        listener=new PortListener(port);        System.out.println(2);    }        // 事件监听    public void actionPerformed(ActionEvent event) {                if (event.getSource()==button) {                        // 当点击"发送"按钮,执行发送消息功能            String news=" ";            news=textField.getText();        // 获取输入框的值            this.listener.WriterNews(news);                        // 测试            System.out.println("服务器恢复成功");        }                            }}// 监听类:监听知道端口class PortListener{        // 定义监听元素    ServerSocket serverSocket=null;    Socket socket=null;        // 输入输出流:接受和发送信息    InputStreamReader reader=null;    BufferedReader bufferedReader=null;    PrintWriter writer=null;        // 构造函数:初始化端口监听    public PortListener(int port){                try {                        // 监听2000端口            this.serverSocket=new ServerSocket(port);                        // 等待客户端连接:返回 套接字            this.socket=this.serverSocket.accept();                        // 循环读取客户端的消息            while(true){                                QQserver.textArea.append("客户端:\r\n"+this.ReaderNews()+"\r\n");                            }                                } catch (Exception e) {                        e.printStackTrace();        }    }        // 读取消息    public String ReaderNews(){                // 返回的消息        String news=null;                try {            // 开始读取数据            reader=new InputStreamReader(this.socket.getInputStream());            bufferedReader=new BufferedReader(reader);            news=bufferedReader.readLine();                // 目前,只能读取一行信息                    } catch (Exception e) {            e.printStackTrace();        }                // 返回读取到的信息        return news;    }        // 写消息    public void WriterNews(String news){                try {            // 开始读取信息:此处一定要时时刷新,即:参数设置为true            writer=new PrintWriter(this.socket.getOutputStream(),true);            writer.println(news);            QQserver.textField.setText("");                        // 给自己打印消息            QQserver.textArea.append("客户端:\r\n"+news+"\r\n");                        // 发送信息后,清空输入框            QQserver.textField.setText("");                    } catch (Exception e) {            e.printStackTrace();        }    }    } 



[解决办法]
this.socket=this.serverSocket.accept();
阻塞在这里了。等待一个连接。

读书人网 >J2SE开发

热点推荐