java聊天小程序,进来帮帮我!

来源:百度知道 编辑:UC知道 时间:2024/06/22 05:25:43
以下是我的程序代码,老是不知道为什么不能聊天,高手帮帮我。。。。555555~~~~~
服务器端:
import:略
class wangluo1 extends JFrame implements ActionListener{
JFrame frame=new JFrame();
JPanel panel1=new JPanel();
JPanel panel2=new JPanel();
JTextArea text1=new JTextArea(30,30);
JTextArea text2=new JTextArea(3,25);
JButton sent=new JButton("发送");
InputStream in;
OutputStream out;
Socket client;
ServerSocket server;
public wangluo1(){
add("South",panel2);
add(panel1);
panel1.add(text1);
panel2.setLayout(new FlowLayout());
panel2.add(text2);
panel2.add(sent);
sent.addActionListener(this);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
pack();
setVisible(true);
try{
server=new ServerSocket(10000);
client=server.accept();
in=client.getInputStream();
out=client.getOutpu

程序错在两个主要的地方:
1.读写流竟然没有关闭???而且在关闭之前应该先Flush(),这是因为用读写流的时候,其实数据是先被读到了内存中,然后用数据写到文件中,当你数据读完的时候不代表你的数据已经写完了,因为还有一部分有可能会留在内存这个缓冲区中。这时候如果你调用了 Close()方法关闭了读写流,那么这部分数据就会丢失,所以应该在关闭读写流之前先Flush(),先清空数据。
2.你在接收发送内容的时候用了
byte[] buf = new byte[256];
is.read(buf);
String str = new String(buf);
简单来说,比如你发送的内容是123,那么最后的str串是“123+253个空格”
在用append追加的时候是看不到的,所以在你打印str的时候去掉空格
text1.append("客户机说:" + "\n" +str.trim());
text3.append("客户机说:" + "\n" +str.trim());

这样就可以了,程序还有很多需要完善的地方,我只是给你小改了下:
服务器端:
class wangluo1 extends JFrame implements ActionListener {
JFrame frame = new JFrame();
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JTextArea text1 = new JTextArea(30, 30);
JTextArea text2 = new JTextArea(3, 25);
JButton sent = new JButton("发送");
InputStream in;
OutputStream out;
Socket client;
ServerSocket server;