基于TCP协议的点对点通信java程序,带图形界面

来源:互联网 发布:阳光下的星星知乎 编辑:程序博客网 时间:2024/05/18 17:25
客户端

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);
}
 
 }


原创粉丝点击