当前位置: 代码迷 >> J2SE >> 帮忙看看,小弟我的服务器为什么不能回车发消息
  详细解决方案

帮忙看看,小弟我的服务器为什么不能回车发消息

热度:2883   发布时间:2013-02-25 00:00:00.0
帮忙看看,我的服务器为什么不能回车发消息
Java code
/** * 功能: 带简易界面的聊天程序 *          从9999端口连接服务器 *    问题:还未实现按enter键发送信息 */package com.test3;import javax.swing.*;import java.net.*;import java.io.*;import java.awt.event.*;public class MyClient3 extends JFrame implements ActionListener,KeyListener{    /**     * @param args     */    //定义需要的组件        JTextArea jta = null;        JTextField jtf = null;        JButton jb = null;        JPanel jp = null;        JScrollPane jsp = null;        PrintWriter pw = null;        public static void main(String[] args) {        // TODO Auto-generated method stub        MyClient3 mc3 = new MyClient3();    }        //构造方法        public MyClient3()        {            jta = new JTextArea();            jtf = new JTextField(10);            jtf.addKeyListener((KeyListener) this);            jb = new JButton("发送");            jb.addActionListener(this);            jp = new JPanel();            jsp = new JScrollPane(jta);            jp.add(jtf);            jp.add(jb);                                                this.add(jsp,"Center");            this.add(jp,"South");            this.setSize(400,300);            this.setTitle("正在与服务器聊天...");            this.setVisible(true);                        try {                //连接服务器                Socket s = new Socket("127.0.0.1", 9999);                                pw = new PrintWriter(s.getOutputStream(),true);                                //接受来之服务器的信息                InputStreamReader isr = new InputStreamReader(s.getInputStream());                BufferedReader br = new BufferedReader(isr);                                //读取来之服务器的信息                while(true)                {                    String infoFromServer = br.readLine();                    //显示到jta聊天区域                    jta.append("服务器:"+infoFromServer+"\r\n");                }                                            } catch (UnknownHostException e) {                // TODO Auto-generated catch block                e.printStackTrace();            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }    @Override    public void actionPerformed(ActionEvent arg0) {        // TODO Auto-generated method stub        if(arg0.getSource()==jb)        {            //得到jtf输入框中的内容            String info = jtf.getText();            //发送给服务器            pw.println(info);            //置空jtf输入框            jtf.setText("");            //把info显示到自己的聊天区域jta            jta.append("客服端:"+info+"\r\n");                    }                    }    @Override    public void keyPressed(KeyEvent arg0) {        // TODO Auto-generated method stub        //用户按下回车也发送输入框中的信息        if(arg0.getKeyChar()==KeyEvent.VK_ENTER)        {            //得到jtf输入框中的内容            String info = jtf.getText();            //发送给服务器            pw.println(info);            //置空jtf输入框            jtf.setText("");            //把info显示到自己的聊天区域jta            jta.append("客服端:"+info+"\r\n");        }    }    @Override    public void keyReleased(KeyEvent arg0) {        // TODO Auto-generated method stub                    }    @Override    public void keyTyped(KeyEvent arg0) {        // TODO Auto-generated method stub            }}

Java code
/** * 带简易界面的服务器和客服端聊天程序 * 这是服务器端,监听9999端口 *   问题:还未实现按enter键发送信息 */package com.test3;import java.net.*;import javax.swing.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.io.*;public class MyServer3 extends JFrame implements ActionListener,KeyListener{    /**     * @param args     *      */        //定义需要的组件    JTextArea jta = null;    JTextField jtf = null;    JButton jb = null;    JPanel jp = null;    JScrollPane jsp = null;    PrintWriter pw = null;        public static void main(String[] args) {        // TODO Auto-generated method stub        MyServer3 ms3 = new MyServer3();    }        //构造方法    public MyServer3()    {        jta = new JTextArea();        jtf = new JTextField(10);        jb = new JButton("发送");        jb.addActionListener(this);        jp = new JPanel();        jsp = new JScrollPane(jta);        jp.add(jtf);        jp.add(jb);                                this.add(jsp,"Center");        this.add(jp,"South");        this.setSize(400,300);        this.setTitle("正在与客服端聊天...");        this.setVisible(true);                try {            //监听9999端口            ServerSocket ss = new ServerSocket(9999);            //等待客服端连接            Socket s = ss.accept();                        //从Socket接收客服端发来的信息            InputStreamReader isr = new InputStreamReader(s.getInputStream());            BufferedReader br = new BufferedReader(isr);            pw = new PrintWriter(s.getOutputStream(),true);            while(true)            {                //接收客服端发来的信息                String infoFromClient = br.readLine();                //把客服端发来的信息显示在jta聊天显示区域并换行                jta.append("客服端:"+infoFromClient+"\r\n");            }                    } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }            }    @Override    public void actionPerformed(ActionEvent arg0) {        // TODO Auto-generated method stub        if((arg0.getSource()==jb))        {            //如果用户点击了发送按钮,先得到输入框jtf中的内容            String info = jtf.getText();            //把info发送给客服端,并置空输入框jtf            pw.println(info);            jtf.setText("");            //把自己发送给客服端的信息也显示到聊天区域jta            jta.append("服务器:"+info+"\r\n");        }    }    @Override    public void keyPressed(KeyEvent e) {        // TODO Auto-generated method stub        if(e.getKeyChar()==KeyEvent.VK_ENTER)        {            String info = jtf.getText();            pw.println(info);            jtf.setText("");            jta.append("服务器:"+info+"\r\n");        }    }    @Override    public void keyReleased(KeyEvent e) {        // TODO Auto-generated method stub            }    @Override    public void keyTyped(KeyEvent e) {        // TODO Auto-generated method stub            }}
  相关解决方案