我有一個非常簡單的大寫Java程序。客戶端將從標準輸入讀取的文本發送到將該文本轉換爲大寫字母的服務器。程序運行良好,但一旦客戶端停止(使用NetBeans IDE),服務器也會重置。無論客戶端是否停止,服務器套接字都應該監聽來自客戶端的新連接。java:關閉客戶端套接字重置服務器套接字
public class Client
{
public static void main(String[] args) throws IOException
{
try(Socket s=new Socket("localhost",9090))
{
while(true)
{
PrintWriter out=new PrintWriter(s.getOutputStream(),true);
BufferedReader rd=new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedReader from=new BufferedReader(new InputStreamReader(System.in));
String read=from.readLine();
out.println(read);
String answer;
answer=rd.readLine();
System.out.println(answer);
}
}
}
}
public class Server
{
public static void main(String[] args) throws IOException
{
try(ServerSocket listener = new ServerSocket(9090);
Socket socket = listener.accept();)
{
while (true)
{
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
System.out.println("Started...");
String transform=br.readLine();
String newStr=transform.toUpperCase();
out.println(newStr);
}
}
}
}
那麼,你的程序只接受一個連接。如果你想接受更多,你應該有一個循環。請參閱[Java Socket服務器教程,最後一部分](http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html#later) – RealSkeptic 2015-02-07 20:56:20
「使用循環」也是我的答案。 – markspace 2015-02-07 20:56:44