📄 simplemultichatsubserver.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 + -