zoukankan      html  css  js  c++  java
  • 客户端与服务器聊天------服务器端

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

    }
    }

  • 相关阅读:
    单词
    算法2
    GameplayKit的GKStateMachine用法与实例
    适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
    Swift使用AVAudioPlayer来调节游戏的背景音乐大小
    学好三角学(函数) — SWIFT和JAVASCRIPT游戏开发的必备技能 iFIERO.com
    应用UserDefaults储存游戏分数和最高分
    一步一步图文介绍SpriteKit使用TexturePacker导出的纹理集Altas
    SpriteKit在复制节点时留了一个巨坑给开发者,需要开发者手动把复制节点的isPaused设置为false
    运用GamePlayKit的GKEntity及GKComponent 的iOS游戏开发实例
  • 原文地址:https://www.cnblogs.com/quanby/p/5457139.html
Copyright © 2011-2022 走看看