⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serverthread.java

📁 simple chat program for communication between machines source codes plus executables in java
💻 JAVA
字号:
package bng.chat;

import java.io.*;
import java.net.Socket;
import java.text.DateFormat;
import java.util.Date;
import java.util.Iterator;

// Referenced classes of package bng.chat:
//            Server, Chatter

public class ServerThread extends Thread
{

    public void run()
    {
        try
        {
            dos = new DataOutputStream(socket.getOutputStream());
            dis = new DataInputStream(socket.getInputStream());
            do
            {
                name = dis.readUTF();
                name = name.substring(name.lastIndexOf(":") + 1);
                if(!server.chatterExists(name))
                    break;
                dos.writeUTF("Login:0");
            } while(true);
            chatter = new Chatter(name, socket, dis, dos);
            dos.writeUTF("Login:1");
            server.sendToAll(name + " joined");
            server.putChatter(chatter);
            dos.writeUTF("Welcome " + name + " !");
            
            server.sendToAll("ChatterList:" + prepareChatterList());
            do
            {
                Date date = new Date();
                DateFormat dateformat = DateFormat.getTimeInstance(3);
                String s = dateformat.format(date);
                message = dis.readUTF();
                server.sendToAll(name + " (" + s + "): " + message);
            } while(true);
        }
        catch(EOFException eofexception) { }
        catch(IOException ioexception) { }
        finally
        {
            if(chatter != null)
            {
                server.removeChatter(name);
                server.sendToAll("ChatterList:" + prepareChatterList());
                server.sendToAll(name + " left");
            } else
            {
                try
                {
                    System.out.println("Removed connection: " + socket);
                    socket.close();
                }
                catch(Exception exception1)
                {
                    System.out.println(exception1.getMessage());
                }
            }
        }
    }

    public String prepareChatterList()
    {
        StringBuffer stringbuffer = new StringBuffer("");
        for(Iterator iterator = server.getChatters(); iterator.hasNext(); stringbuffer.append(((Chatter)iterator.next()).getName() + ":"));
        return stringbuffer.toString();
    }

    public ServerThread(Server server1, Socket socket1)
    {
        server = server1;
        socket = socket1;
        start();
    }

    private Server server;
    private Chatter chatter;
    private String name;
    private String message;
    private DataInputStream dis;
    private DataOutputStream dos;
    private Socket socket;
}

⌨️ 快捷键说明

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