在我的机器上,以下代码在Eclipse中编译,但在Netbeans中引发异常。错误消息显示“线程“主”中的异常java.net.BindException:地址已在使用中”。
Netbeans中正确的配置是什么才能使此代码编译?问题似乎与我有两个主要职能有关。如果我开始运行其中一个应用程序,则第二个应用程序将无法启动,并引发上述异常。
服务器.java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws Exception {
Server myServ = new Server();
myServ.run();
}
public void run() throws Exception {
ServerSocket mySS = new ServerSocket(9999);
Socket SS_accept = mySS.accept();
InputStreamReader mySR = new InputStreamReader(SS_accept.getInputStream());
BufferedReader myBR = new BufferedReader(mySR);
String temp = myBR.readLine();
System.out.println(temp);
}
}
Run Code Online (Sandbox Code Playgroud)
客户端.java
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws Exception {
Client myCli = new Client();
myCli.run();
}
public void run() throws Exception {
Socket mySkt = new Socket("localhost", 9999);
PrintStream myPS = new PrintStream(mySkt.getOutputStream());
myPS.println("Hello server");
}
}
Run Code Online (Sandbox Code Playgroud)
实现我想要的方法是右键单击Server.java我想要运行的特定类(例如),然后选择“运行此文件”。这使我能够仅运行服务器应用程序。然后,对另一个文件 .txt 执行相同的过程Client.java。
然而,在这种特殊情况下,Netbeans 有点令人困惑/具有欺骗性。Netbeans 所做的是运行该Server进程,但将该进程标记为项目名称(例如 MyTestNetworkingProject),并在其上放置一个运行编号,从而为我们提供MyTestNetworkingProject run #1(它实际上省略了第一个进程上的 #1)。然后,如果我转到 Client.java 文件并选择“运行此文件”,它会生成第二个进程MyTestNetworkingProject run #2. 然后,它会在屏幕底部生成第二个结果窗口,因为它会在创建新进程时在新选项卡中生成这些结果。
由于我的特定代码的性质,我想在结果窗口中看到以确认我的应用程序正在工作,我想观察 Server.java 结果窗口(在本例中为MyTestNetworkingProject run #1)。鉴于我上面概述的运行不同文件的确切步骤顺序,运行 #2 是最后一个运行进程,因此顶部的选项卡覆盖了运行 #1 选项卡。我可以单击 run #1 并查看我希望在控制台中看到的结果(“Hello server”),但我只需要知道/记住代表MyTestNetworkingProject run #1服务器应用程序而不是客户端应用程序。
不酷,国际海事组织。
| 归档时间: |
|
| 查看次数: |
26623 次 |
| 最近记录: |