這是服務端:
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("");
}
}
}
}
下面是效果圖: