我正在努力设置我的第一个服务器/客户端连接。我的 GUI 有一个对话框。按下其中的发送按钮后,我打电话给client.connect().
它第一次工作,但是当我继续并重新打开对话框(按发送后它会自行关闭)并尝试再次执行相同操作时,我将收到“连接被拒绝”错误。我怀疑这是由于服务器仍然连接到原始套接字并且按钮事件client.connect()
再次触发。(这将尝试连接一个新的)。但我不知道如何确保不会发生这种情况。一旦对话框关闭,我必须以某种方式关闭客户端套接字,对吗?我该如何实施?还是问题出在其他地方?这只是一个感觉有点正确的猜测。
这是我的Client
课程(它包括connect()
上面调用的方法):
public class Client extends Application
{
private String string = "";
Socket s;
@Override
public void start(Stage primaryStage)
{
VBox root = new VBox();
Scene scene = new Scene(root, 380, 200);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) throws IOException
{
Client client = new Client();
client.connect();
launch(args);
}
public void connect() throws UnknownHostException, IOException
{
s = new Socket("localhost",3000);
System.out.println("Connected");
PrintWriter dos = new PrintWriter(s.getOutputStream());
dos.println(string);
dos.flush();
}
}
这是我的Server
课:
public class Server
{
public static void main(String[] args) throws UnknownHostException, IOException
{
ServerSocket server = new ServerSocket (3000);
Socket s = server.accept();
System.out.println("Connected");
BufferedReader dis = new BufferedReader(new InputStreamReader(s.getInputStream()));
System.out.println(dis.readLine());
}
}
请注意,这是我第一次在 java 中设置服务器/客户端,因此尝试使用本地主机和可能明显的问题。