客户端
package client;
import java.awt.*;
import java.awt.event.*;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.AbstractButton;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.text.Element;
import javax.swing.text.html.ImageView;
import client.Monitor1;
public class Chatclient extends JFrame {
TextField tftext = new TextField(50);
static TextArea tfarea = new TextArea();
JButton button = new JButton("发送");
static JButton button2 = new JButton("关闭");
Color c1 = new Color(000, 254, 007);
static Socket s1;
static DataOutputStream dos;
static ImageIcon icon;
Image image;
public static void main(String[] args) {
new Chatclient().launchFrame();
// InputStream in;
// OutputStream os;
try {
OutputStream os = s1.getOutputStream();
dos = new DataOutputStream(os);
InputStream in = s1.getInputStream();
DataInputStream dis = new DataInputStream(in);
while (true) {
String ii = dis.readUTF();
System.out.println(ii);
if (ii != null) {
tfarea.append("Server说:" + ii + "\n");
}
}
} catch (IOException e1) {
e1.printStackTrace();
}
}
public void launchFrame() {
JPanel panel = new JPanel()
{
protected void paintComponent(Graphics g)
{
g.drawImage(icon.getImage(), 0, 0, null);
super.paintComponent(g);
}
};
icon = new ImageIcon("image/1.jpg");
panel.setOpaque( false );
panel.setPreferredSize( new Dimension(510,285));
setLocation(400, 300);
this.setSize(450, 280);
this.setTitle("作者:(网络工程1101班)方雷江------聊天客户端");
Panel p = new Panel();
Panel p2 = new Panel();
Panel p3 = new Panel();
Panel p4 = new Panel();
// this.add(new ImageView((Element) image));
p.add(new JLabel("对话框"));
p.add(tfarea);
p2.add(new JLabel("输入框"));
p2.add(tftext);
p3.add(button);
p3.add(button2);
panel.add(p,BorderLayout.NORTH);
panel.add(p2,BorderLayout.CENTER);
panel.add(p3,BorderLayout.SOUTH);
p4.add(new JLabel("@copyright方雷江"));
this.add(p4,BorderLayout.SOUTH);
this.add(panel);
//tfarea.setBackground(c1);
Monitor1 m1 = new Monitor1();
button2.addActionListener((ActionListener) m1);
pack();
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
tftext.addActionListener(new TFlistener());
button.addActionListener(new TFlistener());
setVisible(true);
tfarea.append("客户端已启动.........."+"\n");
connect();
}
public void connect() {
try {
s1 = new Socket("127.0.0.1", 8888);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public class TFlistener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String s = tftext.getText().trim();
tfarea.append("自己: " + s + "\n");
tftext.setText("");
try {
dos.writeUTF(s);
dos.flush();
// dos.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
class Monitor1 implements ActionListener{
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
服务器端
package server;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import server.Monitor1;
public class ChatServer {
static JFrame f = new JFrame("作者:(网络工程1101班)方雷江------聊天服务器端");
static TextField tftext = new TextField(50);
static TextArea tfarea = new TextArea();
static JButton button = new JButton("发送");
static JButton button2 = new JButton("关闭");
static ImageIcon pic = new ImageIcon("image/01.png");
Socket s1;
InputStream in;
DataInputStream dis;
OutputStream os;
static DataOutputStream dos;
static ImageIcon icon;
Image image;
public ChatServer() {
tftext.addActionListener(new TFlistener());
button.addActionListener(new TFlistener());
}
public static void main(String[] args) {
new ChatServer();
JPanel panel = new JPanel()
{
protected void paintComponent(Graphics g)
{
g.drawImage(icon.getImage(), 0, 0, null);
super.paintComponent(g);
}
};
icon = new ImageIcon("image/1.jpg");
panel.setOpaque( false );
panel.setPreferredSize( new Dimension(510,285));
Panel p = new Panel();
Panel p2 = new Panel();
Panel p3 = new Panel();
Panel p4 = new Panel();
p.add(new JLabel("对话框"));
p.add(tfarea);
p2.add(new JLabel("输入框"));
p2.add(tftext);
p3.add(button);
p3.add(button2);
p4.add(new JLabel("@copyright方雷江"));
panel.add(p,BorderLayout.NORTH);
panel.add(p2,BorderLayout.CENTER);
panel.add(p3,BorderLayout.SOUTH);
f.add(p4,BorderLayout.SOUTH);
//tfarea.setBackground(Color.green);
f.add(panel);
f.setSize(550, 330);
Monitor1 m1 = new Monitor1();
button2.addActionListener((ActionListener) m1);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
connect();
}
static boolean started = false;
public static void connect() {
try {
ServerSocket ss = new ServerSocket(8888);
started = true;
while (started) {
boolean connected = false;
Socket s1 = ss.accept();
connected = true;
System.out.println("有一个客户端连接上了");
tfarea.append("有一个客户端连接上了.........."+"\n");
// 读进
InputStream in = s1.getInputStream();
DataInputStream dis = new DataInputStream(in);
// 写出
OutputStream os = s1.getOutputStream();
dos = new DataOutputStream(os);
while (connected) {
String ii = dis.readUTF();
System.out.println(ii);
if (ii != null) {
tfarea.append("Client说:" + ii + "\n");
}
}
s1.close();
dis.close();
}
} catch (IOException e) {
e.printStackTrace();
e.printStackTrace();
System.out.println("程序运行出错了");
}
}
public class TFlistener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String s = tftext.getText().trim();
tfarea.append("自己: " + s + "\n");
tftext.setText("");
//System.out.println("本人 :" + s);
try {
dos.writeUTF(s);
dos.flush();
// dos.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
class Monitor1 implements ActionListener{
public void actionPerformed(ActionEvent e) {
System.exit(0);
}