【发布时间】:2011-09-28 21:51:00
【问题描述】:
所以我用 Java 制作了一个带有套接字的服务器和客户端。我试图让服务器从套接字读取/写入,但它只在客户端断开连接时读取:
System.out.println("Server initialized");
clientSocket = server.accept();
System.out.println("Client connected");
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
for(int loop = 0;loop<5;loop++){
out.write("Hello");
System.out.println(in.readLine());
} //end for
问题是,一旦客户端连接,它会显示“客户端已连接”,但它不会通过 for 循环运行。但是,一旦客户端断开连接,服务器就会执行 for 循环并返回
null
null
null
null
null
我在这里缺少什么?这是我的完整服务器代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public ServerSocket server;
public Server(int port){
try {
server = new ServerSocket(port);
} catch (IOException e) {
System.out.println("Cannot bind to port: "+ port);
System.exit(-1);
}
} //end constructor
public void WaitForClient() throws IOException{
Socket clientSocket = null;
try {
System.out.println("Server initialized");
clientSocket = server.accept();
System.out.println("Client connected");
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
for(int loop = 0;loop<5;loop++){
out.write("Hello");
System.out.println(in.readLine());
} //end for
} //end try
catch (IOException e) {
System.out.println("Accept failed");
System.exit(-1);
} //end catch
clientSocket.close();
server.close();
} //end method
} //end class
(我的主要方法是从另一个类调用的。)
【问题讨论】: