我被困在大学课程的家庭作业中。 我们应该使用客户端和服务器编写一个Rock-Paper-Scissors游戏,选择TCP或UDP。 客户端部分的分配是: “在开始时获取服务器的IP地址和端口,然后使用此信息连接到服务器。” 和服务器: “端口需要在开始时使用命令行输入设置为介于10000和20000之间的数字。” 现在这让我感到疑惑。如果客户端没有连接到服务器,客户端应该如何获得服务器的IP地址和端口? 通常客户端和服务器创建一个套接字,服务器监听客户端是否要连接然后接受请求,建立连接,而不是客户端,就像在分配中请求的那样。如果没有连接,是不是不可能知道服务器?
如果服务器运行,我的版本正常工作:
// Setting the port via console, making an output: "please enter valid port" and returns the entered port number
ServerTest.port = ServerTest.getPort();
...
ServerSocket testSocket = new ServerSocket(ServerTest.port);
和客户:
private static String host = "localhost";
private static Integer port = 1337;
...
Socket clientSocket = new Socket(ClientTest.host, ClientTest.port);
如果我在启动服务器时将端口设置为1337。
然后我尝试了类似
的东西//Client
port = ServerTest.getServerPort();
...
Socket clientSocket = new Socket(ClientTest.host, ClientTest.port);
并在服务器类中:
public static Integer getServerPort(){
return port;
}
但是,抛出“连接被拒绝”的例外,即使我首先是服务器,设置端口而不是启动客户端。 有谁知道如何解决这个问题?