当前位置:文档之家› JAVA代码编写一简单网络聊天程序

JAVA代码编写一简单网络聊天程序

while(true){
this.sleep(100);
if(instr.ready()){
jTextArea1.append("服务器: "
+instr.readLine()+"\n");
}
}
}catch(Exception ex){
}
}
}
public void actionPerformed(ActionEvent e){
JPanel contentPane;
JLabel jLabel2 = new JLabel();
JTextField jTextField2 = new JTextField("4700");
JButton jButton1 = new JButton();
JLabel jLabel3 = new JLabel();
jLabel2.setText("端口号");
jLabel2.setFont(new java.awt.Font("宋体", 0, 14));
jTextField2.setBounds(new Rectangle(113, 27, 315, 24));
jButton1.setBounds(new Rectangle(440, 28, 73, 25));
jTextArea1.append("客户端已经连接到服务器\n");
MyThread t=new MyThread();
t.start();
}
}catch(Exception ex){
}
}
private void sendData(String s){//发送数据
try{
os= new PrintWriter(socket.getOutputStream());
JButton jButton2 = new JButton();
JScrollPane jScrollPane1 = new JScrollPane();
JTextArea jTextArea1 = new JTextArea();
BufferedReader instr =null;
Socket socket = null;
JLabel jLabel2 = new JLabel();
JTextField jTextField2 = new JTextField("4700");
JButton jButton1 = new JButton();
JLabel jLabel3 = new JLabel();
JTextField jTextField3 = new JTextField();
服务器端:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import .*;
public class Server extends JFrame implements ActionListener{
String s=this.jTextField3.getText().trim();
sendData(s);
}
}
private void connectServer(String ip,int port){//连接
try{
if(jButton1.getText().trim().equals("连接")){
要求:聊天室服务器、聊天室客户端;客户端之间可以聊天。
因为我是初级选手,想借此程序分析学习java,所以代码最好多一点注释...
分数有限,望大家不吝赐教!!问题补充:
需要图形用户界面哦,最好用swing组件
服务器端:采用多线程,可以向客户广播:当前聊天室人数,客户名称列表,客户进入离开提示;
客户端:可以设定昵称,性别,客户间可以私聊
ServerSocket server = null;
Socket socket = null;BufferedReader instr =null;PrintWriter os=null ;
//Construct the frame
public Server() {
jbInit();
}
class MyThread extends //该线程负责接受数据
jButton1.setText("连接服务器...");
socket=new Socket(ip,port);
jButton1.setText("正在聊天");
MyThread t=new MyThread();
t.start();
}
}catch(Exception ex){
}
}
private void sendData(String s){//发送数据
listenClient(port);
}
if(e.getSource()==jButton2){
String s=this.jTextField3.getText().trim();
sendData(s);
}
}
private void listenClient(int port){//侦听
try{
if(jButton1.getText().trim().equals("侦听")){
jTextField3.setText("");
jButton2.setText("发送");
jButton2.setActionCommand("jButton1");
jButton2.setBorder(BorderFactory.createEtchedBorder());
jButton2.setFont(new java.awt.Font("Dialog", 0, 14));
if(e.getSource()==jButton1){
String ip=jTextField3.getText().trim();
int port=Integer.parseInt(jTextField2.getText().trim());
connectServer(ip,port);
}
if(e.getSource()==jButton2){
jScrollPane1.getViewport().add(jTextArea1, null);
jButton1.addActionListener(this);
jButton2.addActionListener(this);
this.addWindowListener(new WindowAdapter(){
import java.io.*;
import .*;
public class Client extends JFrame implements ActionListener{
JPanel contentPane;
JLabel jLabel1 = new JLabel();
JTextField jTextField1 = new JTextField("127.0.0.1");
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(null);
this.setSize(new Dimension(540, 340));
this.setTitle("服务器");
jLabel2.setBounds(new Rectangle(22, 27, 72, 28));
contentPane.add(jLabel3, null);
contentPane.add(jTextField3, null);
contentPane.add(jButton2, null);
contentPane.add(jScrollPane1, null);
contentPane.add(jLabel2, null);
os.println(s);
os.flush();
if(!s.equals("已经成功连接。。。"))
this.jTextArea1.append("Server:"+s+"\n");
}catch(Exception ex){
}
}
//Component initialization
private void jbInit() {
jLabel3.setBounds(new Rectangle(23, 57, 87, 28));
jLabel3.setText("请输入信息");
jLabel3.setFont(new java.awt.Font("宋体", 0, 14));
jTextField3.setBounds(new Rectangle(114, 60, 314, 24));
jButton2.setBounds(new Rectangle(440, 58, 73, 25));
jScrollPane1.setBounds(new Rectangle(23, 92, 493, 189));
contentPane.add(jTextField2, null);
contentPane.add(jButton1, null);
public void run(){
相关主题