我正在尝试编写一个小程序来打开一个到我的世界服务器的套接字,这样我就可以通过它的远程控制台与之交互。
我了解了如何使用 Java 套接字的基础知识,但我无法找到一种简单的方法来让套接字在我工作时保持在后台运行,例如从控制台获取用户输入或读取配置文件。
我看过的一些示例涉及使用线程并创建网络线程只是为了保持套接字连接到服务器。
当我试图让一个线程工作时,程序会运行,但它会立即切换到线程 1(我创建的那个),然后它不会打印我的测试行,因为线程 0 已暂停,被告知等待。
这个问题我真的不完全理解线程,所以我对此有点茫然。但我想不出办法让事情变得简单。有任何想法吗?
这是我到目前为止所做的代码,虽然不多,但也许会有所帮助。
package com.solignis.rcon;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
public class Connection extends Thread {
private InetSocketAddress serverAddress;
private int timeout;
private Socket socket;
public Connection(String par1, int par2) {
serverAddress = new InetSocketAddress(par1, par2);
}
@Override
public void run() {
socket = new Socket();
try {
socket.connect(serverAddress, timeout);
} catch (IOException e) {
e.printStackTrace();
}
while(socket.isConnected()) {
}
}
public void connect() {
this.run();
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Connecting to " + serverAddress.toString());
if(socket.isConnected()){
System.out.println("Connection established");
}else{
System.out.println("Connection failed");
}
}
public void disconnect() {
this.notify();
try {
socket.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
}