📄 serversideconnection.java
字号:
package jsunit.java.source_core.net.jsunit;
import java.io.*;
import java.net.Socket;
public class ServerSideConnection {
private int port;
private Socket clientSocket;
private PrintWriter writer;
private String host = "localhost";
private boolean isConnected;
private final MessageReceiver receiver;
private BufferedReader reader;
public ServerSideConnection(MessageReceiver receiver, int port) {
this.receiver = receiver;
this.port = port;
}
public void connect() {
for (int i = 1; i < 30; i++) {
try {
clientSocket = new Socket(host, port);
writer = new PrintWriter(new OutputStreamWriter(clientSocket.getOutputStream(), "UTF-8"), false);
reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream(), "UTF-8"));
isConnected = true;
new ReaderThread().start();
return;
} catch (IOException e1) {
try {
Thread.sleep(250);
} catch (InterruptedException e2) {
}
}
}
throw new RuntimeException("server could not connect");
}
public void shutDown() {
if (writer != null) {
writer.close();
writer = null;
}
try {
if (clientSocket != null) {
clientSocket.close();
clientSocket = null;
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void sendMessage(String message) {
writer.println(message);
writer.flush();
}
public boolean isConnected() {
return isConnected;
}
class ReaderThread extends Thread {
public void run() {
String message;
try {
while (isConnected && reader != null && (message = reader.readLine()) != null)
receiver.messageReceived(message);
} catch (IOException e) {
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -