serverthread.java

来自「一个用于WEB方式的文本交谈.即N对N方式交谈」· Java 代码 · 共 62 行

JAVA
62
字号
package cn.com.sihitech.cc.chat;

import java.io.*;
import java.net.*;
import java.util.*;
import java.text.SimpleDateFormat;

public class ServerThread extends Thread {
    private Server server = null;
    private Socket socket = null;
    //MsgContent theMsgContent = new MsgContent();
    //MsgContent theMsgContent = new MsgContent();
    public ServerThread(Socket socket, Server server) {
        super("ServerThread"); //服务器一直执行同一线程
        this.socket = socket;
        this.server = server;
    }

    public void run() {
        try {
            Calendar cal = Calendar.getInstance();
            SimpleDateFormat formatter = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss");
            String FileFormat = formatter.format(cal.getTime());

            DataInputStream addResult;
            addResult = new DataInputStream(
                    new BufferedInputStream(socket.getInputStream())); //读取发送信息的客户端的输入流
            byte buffer[] = new byte[1024];
            int byteCount = 0;
            String result = "";
            while ((byteCount = addResult.read(buffer, 0, 1024)) != -1) { //把输入流中有信息则读取到字节缓冲区
                result = new String(buffer, 0, byteCount); //把字节转换成GBK编码的字符串
                System.out.println("服务器接收信息....." + result);
                server.send("000000"); //向客户端发送
                if (MsgContent.list == null)
                    MsgContent.list = new ArrayList();
                MsgContent.list.add(result);
            }
            try {
                Thread.sleep(500);
            } catch (InterruptedException ex1) {
            }
        } catch (IOException ex) {
            System.out.println("SeverThread no data");
        } finally {
            Close(); //断开发送信息的客户端socket
        }
    }

    /**
     * 关闭socket
     */
    private void Close() {
        try {
            server.removeClient(socket);
            socket.close();
        } catch (Exception ex) {
            System.out.println("ServerThread removeClient:" + ex);
        }
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?