我有一个非常简单的大写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