我正在使用套接字在Java中编写我的第一个客户端 - 服务器程序。我使用Eclipse作为IDE。当我测试两个程序(服务器和客户端)之间的通信时,首先使用命令提示符运行服务器,然后在Eclipse中运行客户端。一切正常,我可以读取和写入套接字,但是,当我关闭Eclipse中的客户端程序时,服务器程序也关闭。这是为什么发生?服务器应该在命令提示符下自行运行,它不依赖于客户端。为什么服务器在关闭客户端时停止运行?
另外我想知道是否有任何可能我可以在Eclipse中运行这两个程序,而不是先在命令提示符下打开服务器。
这里是我的两个程序代码:
服务器:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerPrg {
public static void main(String[] args) {
System.out.println("Server is running.....");
try {
ServerSocket socketSer = new ServerSocket(4444);
Socket clientSocket = socketSer.accept();
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = (new BufferedReader (new InputStreamReader(clientSocket.getInputStream())));
BufferedReader stdIn = (new BufferedReader (new InputStreamReader(System.in)));
System.out.println("Client: " + in.readLine());
String input ;
while((input = stdIn.readLine()) != null)
{ out.println(input);
System.out.println("Client: " + in.readLine());
}
}
catch (Exception e) {System.out.println("CAN'T CREATE SERVERSOCKET. PROBABLY THE PORT IS BEING USED " + e);}
} //end main
} //end public class
客户:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class ClientPrg {
public static void main(String[] args) {
int portNumber = 4444;
try {
Socket clientSocket = new Socket("127.0.0.1", portNumber);
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String input;
while ((input = stdIn.readLine()) != null)
{
out.println(input);
System.out.println("Server: " + in.readLine());
}
} catch(Exception e)
{
System.out.println(e);
System.out.println("CAN'T CONNECT TO THE SERVER");
}
} //end main
} // end public class
我没有意识到这一点!第二个问题呢。谢谢! – c2J
当然。只需创建两个运行配置文件,但下次请将您的问题限制为“每个问题一个问题”。干杯! –