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

📄 simplemultichatsubserver.java

📁 在一個多人連線伺服器中
💻 JAVA
字号:
package onlyfun.caterpillar.simplenet.multichat;

import java.io.*;
import java.net.Socket;

public class SimpleMultiChatSubServer implements Runnable {
	private Socket socket;
	private SimpleMultiChatServer parent;
	private BufferedReader clientReader;
	private PrintStream clientWriter;
	
	public SimpleMultiChatSubServer(Socket socket, SimpleMultiChatServer parent) throws IOException {
		this.socket = socket;
		this.parent = parent;
		clientReader = new BufferedReader(
                new InputStreamReader(socket.getInputStream()));
    	clientWriter = new PrintStream(socket.getOutputStream());
    	// Send a identification of the server to client.
    	// It's used for the server's command to client.
    	// Here, I just use the hashcode of multi chat server.
    	sendMessageToClient("" + parent.hashCode());
	}
	
	// Get SubServer's name.
	// Here, I'm using the client's address. 
	public String getName() {
		return socket.getRemoteSocketAddress().toString();
	}
	
	public void run() {
		try {
			String message;
			// Get the client's message and then broadcase it.
			while((message = clientReader.readLine()) != null) {
				parent.broadCastToClient(message);
				parent.log(getName() +  ": " + message);
			}
		}
		catch(IOException e) {
			parent.log(getName() +  ": " + e);
		}
		finally {
			shutdown();
		}
	
	}
	
	public void sendMessageToClient(String message) {
		clientWriter.println(message);
	}
	
	public boolean isClosed() {
		return socket.isClosed();
	}
	
    public void shutdown() {
    	try {
            socket.close();
    	}
    	catch(IOException e) {
    		parent.log(getName() +  ": " + e);
    	}    	
    }
    
}

⌨️ 快捷键说明

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