• 客户端与服务器聊天------服务器端


    package week6.serverAndClient;

    import java.awt.Container;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.net.UnknownHostException;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    import javax.swing.JToolBar;

    public class Service extends Thread {
    private String message;
    private static JTextArea area;
    private ServerSocket serverSocket;
    private static Socket socket;

    @Override
    public void run() {
    try {
    DataOutputStream output = new DataOutputStream(socket.getOutputStream());
    output.writeUTF("服务器说:欢迎连接服务器!");
    // 接受服务区信息
    while (true) {
    DataInputStream input = new DataInputStream(socket.getInputStream());
    message = input.readUTF();
    area.append(message);
    }
    } catch (UnknownHostException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    public Service(int port,JTextArea area) {
    this.area=area;
    try {
    serverSocket = new ServerSocket(port);
    socket = serverSocket.accept();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    public static void main(String[] args) {

    JFrame frame = new JFrame();
    frame.setTitle("服务器");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    frame.setLocationRelativeTo(null);
    frame.setBounds(100, 100, 738, 499);
    frame.setResizable(false);
    Container container = frame.getContentPane();
    container.setLayout(null);

    area = new JTextArea();// 总聊天框
    area.setBounds(37, 20, 647, 275);
    container.add(area);
    Service service = new Service(9000,area);
    service.start();

    final JTextField chartField = new JTextField();// 个人信息框
    chartField.setBounds(37, 332, 534, 58);
    container.add(chartField);
    chartField.setColumns(10);

    JButton sendBtn = new JButton("发送");// 发送按钮
    sendBtn.setBounds(591, 332, 93, 23);
    container.add(sendBtn);

    sendBtn.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent arg0) {
    String message = " "+"服务器说:" + chartField.getText();
    chartField.setText(null);
    area.append(message);
    if (message != null) {
    try {
    DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream());
    outputStream.writeUTF(message);
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    });

    JButton canelBtn = new JButton("取消");// 取消按钮
    canelBtn.setBounds(592, 367, 93, 23);
    container.add(canelBtn);
    canelBtn.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent arg0) {
    chartField.setText(null);
    }
    });

    }
    }

  • 相关阅读:
    perl的文件操作(2)
    使用委派调用对象的方法
    C#GDI+ TextureBrush画刷
    C#GDI+的PathGradientBrush类的使用
    C#异常对象和多catch块
    tr使用
    vim sed删除前N个字符 删除空行等 [转]
    C#检索线程状态
    C#理解线程
    C语言字符串函数大全
  • 原文地址:https://www.cnblogs.com/quanby/p/5457139.html
Copyright © 2020-2023  润新知