这是服务端:
package server;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.Calendar;
public class Server extends JFrame implements ActionListener{
static JTextArea jta=null;
JTextField jtf=null;
JScrollPane jsp=null;
JButton jb_send=null;
JPanel jp=null;
static Socket socket=null;
static String text_message;
public static void main(String[] args) throws IOException {
ServerSocket server=null;
new Server();
try
{
server=new ServerSocket(8001);
socket=server.accept();
}
catch(Exception e)
{
System.out.println("不能监听:"+e);
}
while(true)
{
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
jta.append(br.readLine()+"\n");
}
}
public Server(){
jta=new JTextArea();
jta.setEditable(false);
jsp=new JScrollPane(jta);
jtf=new JTextField(20);
jp=new JPanel();
jb_send=new JButton("发送");
jb_send.addActionListener(this);
jp.add(jtf);
jp.add(jb_send);
this.add(jsp,"Center");
this.add(jp,"South");
this.setTitle("服务端");
this.setSize(300, 200);
this.setLocation(318,186);
this.setResizable(false);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==jb_send)
{
if(jtf.getText().equals(""))
{
JOptionPane.showMessageDialog(null, "消息不能为空");
}
else
{
text_message=jtf.getText();
jta.append("服务端: "+Calendar.getInstance().getTime().toLocaleString()+" "+text_message+"\n");
PrintWriter pw;
try
{
pw = new PrintWriter(socket.getOutputStream(),true);
if(!text_message.equals(""))
{
pw.println("服务端: "+Calendar.getInstance().getTime().toLocaleString()+" "+text_message);
}
}
catch (IOException e1)
{
e1.printStackTrace();
}
jtf.setText("");
}
}
}
}
这是客户端:
package client;
import java.io.*;
import java.net.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
public class Client extends JFrame implements ActionListener{
static JTextArea jta=null;
JTextField jtf=null;
JPanel jp=null;
JButton jb_send=null;
JScrollPane jsp=null;
static String text_message;
static Socket socket=null;
public static void main(String[] args) throws IOException {
new Client();
socket=new Socket("127.0.0.1",8001);
while(true)
{
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
jta.append(is.readLine()+"\n");
}
}
public Client()
{
jta=new JTextArea();
jta.setEditable(false);
jtf=new JTextField(20);
jb_send=new JButton("发送");
jb_send.addActionListener(this);
jp=new JPanel();
jsp=new JScrollPane(jta);
jp.add(jtf);
jp.add(jb_send);
this.add(jsp,"Center");
this.add(jp,"South");
this.setTitle("客户端");
this.setSize(300, 200);
this.setLocation(636,186);
this.setResizable(false);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==jb_send)
{
if(jtf.getText().equals(""))
{
JOptionPane.showMessageDialog(null, "消息不能为空");
}
else
{
text_message=jtf.getText();
try
{
PrintWriter pw=null;
pw=new PrintWriter(Client.socket.getOutputStream(),true);
if(!text_message.equals(""))
{
pw.println("客户端: "+Calendar.getInstance().getTime().toLocaleString()+" "+text_message);
}
}
catch(Exception e1)
{
e1.printStackTrace();
}
jta.append("客户端: "+Calendar.getInstance().getTime().toLocaleString()+" "+text_message+"\n");
jtf.setText("");
}
}
}
}
下面是效果图: