套接字聊天程序

以下是两个程序是图形用户界面套接字聊天程序,但是问题是第一次输入信息后,在对方信息栏里显示消息,而第二次以及以后再输入信息发送后,并不在对方的信息栏里显示第二次的消息,还请大家帮忙看看,谢谢啦!

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.*;

public class TalkEachOther extends JFrame implements Runnable
{
 private static final long serialVersionUID = -7837855188092321634L;
 private Button button0,button,button1;
 private JTextField text,text1;
 private JPasswordField password;
 private Thread thread;
 private DataInputStream input;
 private DataOutputStream output;
 private JTextArea area,area1;
 public TalkEachOther()
 {
  super("聊天程序1");
  super.setSize(400,320);

  Container c=this.getContentPane();
  GridLayout grid=new GridLayout(3,1);
  c.setLayout(grid);
  JPanel panel=new JPanel();
  Label label1=new Label("用户名:");
  text=new JTextField(8);
  Label label2=new Label("用户密码:");
  password=new JPasswordField(8);
  button0=new Button("登录");
  panel.add(label1);
  panel.add(text);
  panel.add(label2);
  panel.add(password);
  panel.add(button0);
  text1=new JTextField(15);
  text1.setEditable(false);
  panel.add(text1);
  c.add(panel);
  
  
  JPanel panel1=new JPanel(new GridLayout(1,2));
  JPanel panel1_1=new JPanel();
  Label label3=new Label("请输入信息:");
  area=new JTextArea(3,15);
  area.setEditable(false);
  area.setLineWrap(true);
  area.setWrapStyleWord(false);
  JScrollPane pane=new JScrollPane(area);

  button=new Button("发送消息");
  button1=new Button("清除信息");
  panel1_1.add(label3);
  panel1_1.add(pane);
  JPanel panel1_2=new JPanel(new FlowLayout());
  JPanel panel1_2_0=new JPanel(new GridLayout(2,1));
  JPanel panel1_2_1=new JPanel();
  panel1_2_1.add(button);
  JPanel panel1_2_2=new JPanel();
  panel1_2_2.add(button1);
  panel1_2_0.add(panel1_2_1);
  panel1_2_0.add(panel1_2_2);
  panel1_2.add(panel1_2_0);
  panel1.add(panel1_1);
  panel1.add(panel1_2);
  c.add(panel1);
  
  JPanel panel2=new JPanel();
  area1=new JTextArea(4,32);
  area1.setEditable(false);
  area1.setLineWrap(true);
  area1.setWrapStyleWord(false);
  JScrollPane pane1=new JScrollPane(area1);
  panel2.add(pane1);
  c.add(panel2);
  
  thread=new Thread(this);
  MyListener listener=new MyListener();
  button0.addActionListener(listener);
  button.addActionListener(listener);
  button1.addActionListener(listener);

  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  super.setVisible(true);
  thread.start();
  super.setResizable(false);
 }
 class MyListener implements ActionListener
 {

  public void actionPerformed(ActionEvent arg0)
  {
   if(arg0.getSource()==button0)
   {
    if(text.getText().trim().equals("leo")&&password.getText().trim().equals("12345"))
    {
     text1.setText("你好!尊敬的"+text.getText().trim()+"用户");
     area.setEditable(true);
     area1.setEditable(true);
    }
    else
    {
     text1.setText("你输入的用户名或密码有误!");
    }
   }
   
   if(arg0.getSource()==button)
   {
    try
    {
     area1.append(text.getText().trim()+":"+area.getText().trim()+"/n");
     Socket socket=new Socket("localhost",4000);
     output=new DataOutputStream(socket.getOutputStream());
     output.writeUTF(text.getText().trim()+":"+area.getText().trim());//output 向外写出信息
     area.setText(null);
    }
    catch (UnknownHostException e)
    {
     e.printStackTrace();
    }
    catch (IOException e)
    {
     System.out.println("无法连接");
    }
   }
   if(arg0.getSource()==button1)
   {
    area.setText(null);
   }
    
  }
  
 }
 
 public void run()
 {
  try
  {
   ServerSocket server=new ServerSocket(4331);
   Socket socket1=server.accept();
   input=new DataInputStream(socket1.getInputStream());
   
   while(true)
   {
    String s=input.readUTF();
    area1.append(s+"/n");
   }
  }
  catch (IOException e)
  {
   System.out.println("连接中断");
  }
 }
 public static void main(String[] args)
 {
  new TalkEachOther();
 }

}
 

*******************************************************

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.*;

public class TalkEachOther1 extends JFrame implements Runnable
{
 private static final long serialVersionUID = -7837855188092321634L;
 private Button button0,button,button1;
 private JTextField text,text1;
 private JPasswordField password;
 private Thread thread;
 private DataInputStream input;
 private DataOutputStream output;
 private JTextArea area,area1;
 public TalkEachOther1()
 {
  super("聊天程序2");
  super.setSize(400,320);

  Container c=this.getContentPane();
  GridLayout grid=new GridLayout(3,1);
  c.setLayout(grid);
  JPanel panel=new JPanel();
  Label label1=new Label("用户名:");
  text=new JTextField(8);
  Label label2=new Label("用户密码:");
  password=new JPasswordField(8);
  button0=new Button("登录");
  panel.add(label1);
  panel.add(text);
  panel.add(label2);
  panel.add(password);
  panel.add(button0);
  text1=new JTextField(15);
  text1.setEditable(false);
  panel.add(text1);
  c.add(panel);
  
  
  JPanel panel1=new JPanel(new GridLayout(1,2));
  JPanel panel1_1=new JPanel();
  Label label3=new Label("请输入信息:");
  area=new JTextArea(3,15);
  area.setEditable(false);
  area.setLineWrap(true);
  area.setWrapStyleWord(false);
  JScrollPane pane=new JScrollPane(area);

  button=new Button("发送消息");
  button1=new Button("清除信息");
  panel1_1.add(label3);
  panel1_1.add(pane);
  JPanel panel1_2=new JPanel(new FlowLayout());
  JPanel panel1_2_0=new JPanel(new GridLayout(2,1));
  JPanel panel1_2_1=new JPanel();
  panel1_2_1.add(button);
  JPanel panel1_2_2=new JPanel();
  panel1_2_2.add(button1);
  panel1_2_0.add(panel1_2_1);
  panel1_2_0.add(panel1_2_2);
  panel1_2.add(panel1_2_0);
  panel1.add(panel1_1);
  panel1.add(panel1_2);
  c.add(panel1);
  
  JPanel panel2=new JPanel();
  area1=new JTextArea(4,32);
  area1.setEditable(false);
  area1.setLineWrap(true);
  area1.setWrapStyleWord(false);
  JScrollPane pane1=new JScrollPane(area1);
  panel2.add(pane1);
  c.add(panel2);
  
  thread=new Thread(this);
  MyListener listener=new MyListener();
  button0.addActionListener(listener);
  button.addActionListener(listener);
  button1.addActionListener(listener);

  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  super.setVisible(true);
  thread.start();
  super.setResizable(false);
 }
 class MyListener implements ActionListener
 {

  public void actionPerformed(ActionEvent arg0)
  {
   if(arg0.getSource()==button0)
   {
    if(text.getText().trim().equals("lee")&&password.getText().trim().equals("12345"))
    {
     text1.setText("你好!尊敬的"+text.getText().trim()+"用户");
     area.setEditable(true);
     area1.setEditable(true);
    }
    else
    {
     text1.setText("你输入的用户名或密码有误!");
    }
   }
   
   if(arg0.getSource()==button)
   {
    try
    {
     area1.append(text.getText().trim()+":"+area.getText().trim()+"/n");
     Socket socket=new Socket("localhost",4331);
     output=new DataOutputStream(socket.getOutputStream());
     output.writeUTF(text.getText().trim()+":"+area.getText().trim());//output 向外写出信息
     area.setText(null);
    }
    catch (UnknownHostException e)
    {
     e.printStackTrace();
    }
    catch (IOException e)
    {
     System.out.println("无法连接");
    }
   }
   if(arg0.getSource()==button1)
   {
    area.setText(null);
   }
  }
  
 }
 
 public void run()
 {

  try
  {
   ServerSocket server=new ServerSocket(4000);
   Socket socket1=server.accept();
   input=new DataInputStream(socket1.getInputStream());
   
   while(true)
   {
    String s=input.readUTF();
    area1.append(s+"/n");
   }
  }
  catch (IOException e)
  {
   System.out.println("连接中断");
  }
 }
 public static void main(String[] args)
 {
  new TalkEachOther1();
 }

}
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值