使用JAVA SOCKET写的一个CHAT程序,接收不到信息...何解?

服务器端:

java 代码
  1. import java.io.*;   
  2. import java.net.*;   
  3. import java.awt.*;   
  4. import java.awt.event.*;   
  5. import javax.swing.*;   
  6. import java.util.*;   
  7. public class ChatServe extends JFrame implements ActionListener{   
  8.     //文本区域类,用于向对方发送信息   
  9.     private JTextField jtf=new JTextField();   
  10.     //文本域类,用于记录双方聊天记录   
  11.     private JTextArea jta=new JTextArea();   
  12.     //来自客户端的信息   
  13.     private DataInputStream msgFromClient;   
  14.     //发往客户端的信息   
  15.     private DataOutputStream msgToClient;   
  16.     public static void main(String[] args) {   
  17.         new ChatServe();   
  18.     }   
  19.     public ChatServe(){//服务器端类的构造函数   
  20.         //建立一个写信息的面板   
  21.         JPanel p=new JPanel();   
  22.         p.setLayout(new BorderLayout());   
  23.         p.add(new JLabel("写信息:"),BorderLayout.WEST);   
  24.         p.add(jtf,BorderLayout.CENTER);   
  25.         jtf.setHorizontalAlignment(JTextField.LEFT);   
  26.            
  27.         getContentPane().setLayout(new BorderLayout());   
  28.         //把聊天记录区加到内容面板并加上一个滚动条   
  29.         getContentPane().add(p,BorderLayout.SOUTH);   
  30.         getContentPane().add(new JScrollPane(jta),BorderLayout.CENTER);   
  31.         //触发事件监听器   
  32.         jtf.addActionListener(this);   
  33.            
  34.         setTitle("聊天程序服务器端");   
  35.         setSize(500,300);   
  36.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
  37.         setVisible(true);   
  38.        
  39.     try{   
  40.         //建立服务器SOCKET   
  41.         ServerSocket serverSocket=new ServerSocket(8000);   
  42.         jta.append("聊天服务器开始时间"+new Date()+'\n');   
  43.         Socket socket=serverSocket.accept();   
  44.         msgFromClient=new DataInputStream(socket.getInputStream());   
  45.         msgToClient=new DataOutputStream(socket.getOutputStream());   
  46.           
  47.     }    
  48.         catch(IOException ex){   
  49.         System.out.println(ex);   
  50.     }   
  51.        
  52. }   
  53.     public void actionPerformed(ActionEvent e){   
  54.         String actionCommand=e.getActionCommand();   
  55.         if(e.getSource() instanceof JTextField){   
  56.            try{   
  57.                 String ToClient=jtf.getText().trim();   
  58.                 msgToClient.writeBytes(ToClient);   
  59.                 msgToClient.flush();   
  60.                    
  61.                 jta.append("服务器:"+ToClient+'\n');   
  62.                 String FromClient=msgFromClient.readUTF();   
  63.                
  64.                 jta.append("客户端:"+msgFromClient+'\n');   
  65.                   
  66.            }   
  67.            catch(IOException ex){   
  68.                System.out.println(ex);   
  69.     }   
  70.                
  71.         }   
  72.     }   
  73. }   

 

客 户端:

java 代码
  1. import java.io.*;   
  2. import java.net.*;   
  3. import java.awt.*;   
  4. import java.awt.event.*;   
  5. import javax.swing.*;   
  6. import java.util.*;   
  7. public class ChatClient extends JFrame implements ActionListener{   
  8.     //文本区域类,用于记录双方聊天内容   
  9.     private JTextField jtf=new JTextField();   
  10.     private JTextArea jta=new JTextArea();   
  11.     private DataInputStream  msgFromServer;   
  12.     private DataOutputStream msgToServer;   
  13.     public static void main(String[] args) {   
  14.         new ChatClient();   
  15.     }   
  16.     public ChatClient(){//服务器端类的构造函数   
  17.         JPanel p=new JPanel();   
  18.         p.setLayout(new BorderLayout());   
  19.         p.add(new JLabel("写信息:"),BorderLayout.WEST);   
  20.         p.add(jtf,BorderLayout.CENTER);   
  21.         jtf.setHorizontalAlignment(JTextField.LEFT);   
  22.            
  23.            
  24.         getContentPane().setLayout(new BorderLayout());   
  25.         //把聊天记录区加到内容面板并加上一个滚动条   
  26.         getContentPane().add(p,BorderLayout.SOUTH);   
  27.         getContentPane().add(new JScrollPane(jta),BorderLayout.CENTER);   
  28.            
  29.         jtf.addActionListener(this);   
  30.            
  31.         setTitle("聊天程序客户端");   
  32.         setSize(500,300);   
  33.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
  34.         setVisible(true);   
  35.        
  36.     try{   
  37.         //建立SOCKET   
  38.           
  39.         jta.append("聊天服务器开始时间"+new Date()+'\n');   
  40.         Socket socket=new Socket("localhost",8000);   
  41.        msgFromServer=new DataInputStream(socket.getInputStream());   
  42.        msgToServer=new DataOutputStream(socket.getOutputStream());   
  43.           
  44.     }    
  45.         catch(IOException ex){   
  46.         System.out.println(ex);   
  47.     }   
  48.        
  49. }   
  50.     public void actionPerformed(ActionEvent e){   
  51.         String actionCommand=e.getActionCommand();   
  52.         if(e.getSource() instanceof JTextField){   
  53.            try{   
  54.                 String ToServer=jtf.getText().trim();   
  55.                 msgToServer.writeBytes(ToServer);   
  56.                 msgToServer.flush();   
  57.                    
  58.                 jta.append("客户端:"+ToServer+'\n');   
  59.                 String FromServer=msgFromServer.readUTF();   
  60.                 jta.append("服务器:"+FromServer+'\n');   
  61.            }   
  62.            catch(IOException ex){   
  63.                System.out.println(ex);   
  64.     }   
  65.                
  66.         }   
  67.     }   
  68. }   
  69.   
不仅都收不到对方的信息,而且连关闭窗口都关不了,不知道为什么.请!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值