Server:
package app2;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.*;
public class Server extends JFrame {
ServerSocket ss;
Socket socket;
Date date;
SimpleDateFormat sdf;
PrintWriter pw;
JTextArea jta1, jta2;
JScrollPane jsp1, jsp2;
JButton submit, clear, save;
public static void main(String[] args) {
new Server();
}
private void setJTA(JTextArea jta) {
jta.setLineWrap(true);
jta.setCaretPosition(jta.getText().length());
}
public Server() {
super("Server");
try {
date = new Date();
sdf = new SimpleDateFormat("HH:mm:ss");
mouseListener m = new mouseListener();
jta1 = new JTextArea(15, 15);
jsp1 = new JScrollPane(jta1);
jta2 = new JTextArea(2, 15);
jsp2 = new JScrollPane(jta2);
submit = new JButton("Submit");
clear = new JButton("Clear");// clear jta1 and jta2;
save = new JButton("Save");// save chatting record;
submit.addMouseListener(m);
clear.addMouseListener(m);
save.addMouseListener(m);
jta1.setEditable(false);
jsp1.setBounds(5, 5, 285, 180);
jsp2.setBounds(5, 190, 285, 40);
submit.setBounds(5, 235, 80, 30);
save.setBounds(110, 235, 80, 30);
clear.setBounds(210, 235, 80, 30);
setJTA(jta1);
setJTA(jta2);
add(jsp1);
add(jsp2);
add(submit);
add(clear);
add(save);
ss = new ServerSocket(9000);
socket = ss.accept();
pw = new PrintWriter(socket.getOutputStream(), true);
new receive(socket);
setSize(300, 300);
setLayout(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setResizable(false);
setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
class receive extends Thread {
private BufferedReader br;
public receive(Socket socekt) {
try {
br = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
} catch (Exception e) {
e.printStackTrace();
}
this.start();
}
public void run() {
try {
while (true) {
jta1.append("\n" + sdf.format(date) + " Received: \n "
+ br.readLine() + "\n");
jta1.moveCaretPosition(jta1.getText().length());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class mouseListener extends MouseAdapter {
private void mSubmit() {
String str = jta2.getText();
pw.println(str);
jta1.append("\n"+sdf.format(date)+" Sent: " + str);
jta2.setText("");
}
private void mClear() {
jta1.setText("");
jta2.setText("");
}
private void mSave() {
FileWriter fw = null;
try {
fw = new FileWriter("C:/Server Chatting Record.txt");
fw.write(jta1.getText());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void mouseClicked(MouseEvent e) {
JButton jb = (JButton) e.getSource();
if (!jta2.getText().equals("") && jb.getText() == "Submit")
mSubmit();
else if (jb.getText() == "Clear")
mClear();
else if (jb.getText() == "Save")
mSave();
}
}
}
Client:
package app2;
import java.awt.event.*;
import java.io.*;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.*;
public class Client extends JFrame {
Date date;
SimpleDateFormat sdf;
Socket socket;
PrintWriter pw;
JTextArea jta1, jta2;
JScrollPane jsp1, jsp2;
JButton submit, clear, save;
public static void main(String[] args) {
new Client();
}
private void setJTA(JTextArea jta) {
jta.setLineWrap(true);
jta.setCaretPosition(jta.getText().length());
}
public Client() {
super("Client");
try {
date = new Date();
sdf = new SimpleDateFormat("HH:mm:ss");
mouseListener m = new mouseListener();
jta1 = new JTextArea(15, 15);
jsp1 = new JScrollPane(jta1);
jta2 = new JTextArea(2, 15);
jsp2 = new JScrollPane(jta2);
submit = new JButton("Submit");
clear = new JButton("Clear");// clear jta1 and jta2;
save = new JButton("Save");// save chatting record.
submit.addMouseListener(m);
clear.addMouseListener(m);
save.addMouseListener(m);
jta1.setEditable(false);
jsp1.setBounds(5, 5, 285, 180);
jsp2.setBounds(5, 190, 285, 40);
submit.setBounds(5, 235, 80, 30);
save.setBounds(110, 235, 80, 30);
clear.setBounds(210, 235, 80, 30);
setJTA(jta1);
setJTA(jta2);
add(jsp1);
add(jsp2);
add(submit);
add(clear);
add(save);
socket = new Socket("127.0.0.1", 9000);
new receive(socket);
pw = new PrintWriter(socket.getOutputStream(), true);
setSize(300, 300);
setLayout(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setResizable(false);
setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
class receive extends Thread {
private BufferedReader br;
public receive(Socket socekt) {
try {
br = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
} catch (Exception e) {
e.printStackTrace();
}
this.start();
}
public void run() {
try {
while (true) {
jta1.append("\n" + sdf.format(date) + "Received: \n "
+ br.readLine() + "\n");
jta1.moveCaretPosition(jta1.getText().length());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class mouseListener extends MouseAdapter {
private void mSubmit() {
String str = jta2.getText();
pw.println(str);
jta1.append("\n" + sdf.format(date) + " Sent: " + str);
jta2.setText("");
}
private void mClear() {
jta1.setText("");
jta2.setText("");
}
private void mSave() {
FileWriter fw = null;
try {
fw = new FileWriter("C:/Client Chatting Record.txt");
fw.write(jta1.getText());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void mouseClicked(MouseEvent e) {
JButton jb = (JButton) e.getSource();
if (!jta2.getText().equals("") && jb.getText() == "Submit")
mSubmit();
else if (jb.getText() == "Clear")
mClear();
else if (jb.getText() == "Save")
mSave();
}
}
}
效果图: