开发环境
Windows 7 操作系统
MyEclipse
聊天室程序结构设计
1.系统分为客户端、服务器端和连接服务器客户端三个模块。
2.客户端负责发送消息。
3.服务器端负责接收客户端发来的信息并执行相应操作处理,最后通过群发功能,使客户端将群聊的消息的显示出来。
4.连接服务器端负责连接服务器,从而进入客户端。
总体模块图
客户端代码
Client.java
package servlet;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
import java.io.OutputStreamWriter;
public class Client {
Socket socket;
BufferedWriter bw;
BufferedReader br ;
public Client(String ip, int port){
try {
socket =new Socket(ip,port);
bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
}catch (UnknownHostException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
public void sendMessage(String message) {
try{
bw.write(message);
bw.newLine();
bw.flush();
}catch(IOException e){
e.printStackTrace();
}
}
public String reciveMessage() {
String message=null;
try {
message = br.readLine();
}catch(IOException e) {
e.printStackTrace();
}
return message;
}
public void close(){
try{
socket.close();
}catch(IOException e){
e.printStackTrace();
}
}}
ClientFrame.java
package servlet;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
public class ClientFrame extends JFrame {
private JPanel contentPane;
private JLabel lblUserName;
private JTextField tfMessage;
private JButton btnSend;
private JTextArea textArea;
private String userName;
private Client client;
public ClientFrame(String ip,String userName){
this.userName = userName;