server.java
import java.io.*;
import java.net.*;
import java.text.SimpleDateFormat;
import java.util.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.*; @SuppressWarnings("serial")
public class Server extends JFrame {
DataInputStream inputFromClient;
DataOutputStream outputToClient;
// Button for send massage
private JButton jbSend = new JButton("Send");
// Text area for displaying contents
private JTextArea jta = new JTextArea();
// Text field for receiving radius
private JTextField jtf = new JTextField();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = new Date();
String time = format.format(d); public static void main(String[] args) {
new Server();
} public Server() {
// Place text area on the frame
setLayout(new BorderLayout());
add(new JScrollPane(jta), BorderLayout.CENTER);
JPanel p = new JPanel();
p.setLayout(new BorderLayout());
p.add(new JLabel("Message"), BorderLayout.WEST);
p.add(jtf, BorderLayout.CENTER);
jtf.setHorizontalAlignment(JTextField.LEFT);
p.add(jbSend, BorderLayout.EAST);
add(p, BorderLayout.SOUTH);
jtf.addActionListener(new ButtonListener()); // Register listener
jbSend.addActionListener(new ButtonListener()); // Register listener
setTitle("Server");
setSize(500, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true); // It is necessary to show the frame here! try {
// Create a server socket
ServerSocket serverSocket = new ServerSocket(8001);
jta.append(" ***Server started at " + time +"***"+ '\n'); // Listen for a connection request
Socket socket = serverSocket.accept(); // Create data input and output streams
inputFromClient = new DataInputStream(socket.getInputStream());
outputToClient = new DataOutputStream(socket.getOutputStream()); while (true) {
// Receive message from the client
String message = inputFromClient.readUTF();
jta.append(" " + time + '\n');
jta.append(" Message: " + message + '\n');
}
} catch (IOException ex) {
jta.append(" ***端口已被占用!*** " + '\n');
}
} public class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
// Get the message from the text field
String message = jtf.getText().trim(); // Send the radius to the server
outputToClient.writeUTF(message);
outputToClient.flush(); // Display to the text area
jta.append(" " + time + '\n');
jta.append(" MyMessage: " + message + "\n");
jtf.setText(null);
} catch (IOException ex) {
System.err.println(ex);
}
}
} }
client.java
import java.io.*;
import java.net.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*; @SuppressWarnings("serial")
public class Client extends JFrame {
// Text field for receiving message
private JTextField jtf = new JTextField(); // Text area to display contents
private JTextArea jta = new JTextArea();
// Button for send massage
private JButton jbSend = new JButton("Send");
// IO streams
private DataOutputStream toServer;
private DataInputStream fromServer;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = new Date();
String time = format.format(d); public static void main(String[] args) {
new Client();
} public Client() {
// Panel p to hold the label and text field
JPanel p = new JPanel();
p.setLayout(new BorderLayout());
p.add(new JLabel("Message"), BorderLayout.WEST);
p.add(jtf, BorderLayout.CENTER);
jtf.setHorizontalAlignment(JTextField.LEFT);
p.add(jbSend, BorderLayout.EAST);
setLayout(new BorderLayout());
add(p, BorderLayout.SOUTH);
add(new JScrollPane(jta), BorderLayout.CENTER); jtf.addActionListener(new ButtonListener()); // Register listener
jbSend.addActionListener(new ButtonListener()); // Register listener setTitle("Client");
setSize(500, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true); // It is necessary to show the frame here! try {
// Create a socket to connect to the server
Socket socket = new Socket("localhost", 8001); // Create an input stream to receive data from the server
fromServer = new DataInputStream(socket.getInputStream()); // Create an output stream to send data to the server
toServer = new DataOutputStream(socket.getOutputStream()); while (true) {
// Get message from the server
String message2 = fromServer.readUTF();
jta.append(" " + time + '\n');
jta.append(" Message: " + message2 + '\n');
}
} catch (IOException ex) {
jta.append(" ***连接服务器失败!*** "+ '\n');
}
} public class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
// Get the message from the text field
String message = jtf.getText().trim(); // Send the message to the server
toServer.writeUTF(message);
toServer.flush(); // Display to the text area
jta.append(" " + time + '\n');
jta.append(" MyMessage: " + message + "\n");
jtf.setText(null);
} catch (IOException ex) {
System.err.println(ex);
}
}
}
}
下载链接: http://pan.baidu.com/s/1mgBKGdU 密码: hkje