我有两个类,第一个是服务器,第二个是视频。在服务器类中,我在启动扩散之前有一个System.out.println。我希望在第二课中只有在控制台上写入"客户端"才能启动视频。在。之后使用某个IP地址。
我该怎么做?
服务器
try {
serverSocket = new ServerSocket(Constants.PORT);
}
catch (IOException e){
e.printStackTrace();
}
while (true) {
try{
socket = serverSocket.accept();
}
catch (IOException e) {
System.out.println("I/O Error : " + e);
}
System.out.println("Client " + socket.getInetAddress() + " connected !");
new DiffusionThread (socket).start();
}
DiffuseVideo
try {
Util.transfertVideo(
new FileInputStream("chrono.flv"),
socket.getOutputStream(),
socket
);
} catch (SocketException e) {
System.err.println(this.getId() + ": " + e);
System.out.println("\n Client " + socket.getInetAddress() +" disconnected !");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
谢谢大家。
答案 0 :(得分:0)
很抱歉,如果我只是回答而不是评论。
但你可以插入一些if子句来设置一些布尔值为true / false,当然也为此创建了setter / getter。
也许是这样的:
if (socket.getInetAsdress() == "1.2.3.4") {
connected = true;
}
或者其他什么。我不知道是否知道是否已经实现了一些方法,你可以检查它并返回一些布尔值。但请注意,您必须初始化布尔值 - 在我的情况下 - 在开始时连接,并且不要忘记每次建立新连接时将其设置为false。
之后,您可以轻松地检查第二类中的布尔值:
if (Server.getBoolean == true) {
//code to execute
} else {
System.out.println("Connection Error!");
}
或者如果你在该布尔值上使用public而不是setter / getter:
if (connected == true) ...
希望这可以帮到你。如果您需要别的东西,请告诉我。