当前位置: 代码迷 >> Eclipse >> java聊天程序
  详细解决方案

java聊天程序

热度:67   发布时间:2016-04-23 13:33:38.0
java聊天程序求助
客户端:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.*;
public class client1 extends JFrame {
private JButton btn_send;
private JLabel label_notice;
private JTextField jtf_send;
private JTextArea jta_message;
private JPanel panel2;
private JScrollPane jsp;
private Socket socket;
DataInputStream in;
  DataOutputStream out;
private JButton btn_connect;
private JPanel panel;
//private Thread thread;
Message m;
public client1()
{
/////////////////////////关于界面的开始//////////////////////////////////
btn_connect=new JButton("连接服务器");
btn_send=new JButton("发送");
m=new Message();
label_notice=new JLabel("请输入发送信息");
jtf_send=new JTextField(35);
panel=new JPanel();
panel.add(label_notice);
panel.add(jtf_send);
panel.add(btn_send);
add(panel,BorderLayout.NORTH);
jta_message=new JTextArea();
jsp=new JScrollPane(jta_message);//////JTextArea时需要用这个容器//////为什么
add(jsp,BorderLayout.CENTER);
add(btn_connect,BorderLayout.SOUTH);
jta_message.setEnabled(true);
jta_message.setEditable(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setTitle("用户");
  setLocation(200,200);
  setSize(630,400);
  setVisible(true);
   
   
  btn_connect.addActionListener(new ActionListener ()/////////监听连接////////
  {
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
try
{
socket =new Socket("127.0.0.1",6666);
out=new DataOutputStream(socket.getOutputStream());
in=new DataInputStream(socket.getInputStream());
btn_connect.setVisible(false);
}
catch(Exception e)
{
e.printStackTrace();
System.out.println("连接失败……,请重新连接……");
}
}
 
  });
 
 
btn_send.addActionListener(new ActionListener()//////////////监听发送键/////////
  {
  public void actionPerformed(ActionEvent e) 
  {
  try
  {
  System.out.println("监听发送键成功");
  String sendmessage=jtf_send.getText();
  jtf_send.setText("");
  out.writeUTF(sendmessage);
  System.out.println(sendmessage);
  //out.flush();
  }
  catch(Exception e1)
  {
  e1.printStackTrace();
  }

}
  }
  );
new Thread(m).start();
}




class Message implements Runnable///////////////////////////内部类的好处//////////////////
{

public void run()
{
System.out.println("进入client的run函数,输出用户写的内容");
String str;
try
{
while(true)
{
System.out.println("准备接受数据");
str=in.readUTF();
if(str!=null)
{
System.out.println("已经收到数据");
System.out.println(str);
jta_message.append(str+'\n');
}

}
}
catch(Exception e)
{
e.printStackTrace();
}

}

}
public static void main(String[] args) {
// TODO Auto-generated method stub
new client1();
}



}
/////////////////////////////////////////////////////////////////////////
  相关解决方案