我正在努力设置我的第一个服务器/客户端连接。我的GUI有一个对话框。按下里面的发送按钮后,我拨打client.connect().
它第一次工作,但是当我继续并重新打开对话框(按下Send后它自己关闭)并尝试再次执行相同操作时,我将收到“连接被拒绝”错误。我怀疑这是由于服务器仍然连接到原始套接字并且按钮事件再次触发client.connect()
。 (将尝试连接新的)。但我不知道如何确保不会发生这种情况。一旦对话关闭,我不得不关闭客户端Socket,对吧?我该如何实现?或者问题出在其他地方?这只是一种猜测,感觉有点正确。
这是我的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中设置Server / Client,因此本地主机试用它并且可能是明显的问题。