我尝试使用以下代码从服务器到客户端发送文件和目录列表。服务器正在从客户端接收消息,但我不知道服务器是否没有发送回结果或客户端是否不接受结果。
服务器端:
package without.thread; import java.io.BufferedOutputStream; import java.net.ServerSocket; import java.net.Socket; import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import static java.rmi.Naming.list; import java.util.ArrayList; import static java.util.Collections.list; import java.util.logging.Level; import java.util.logging.Logger; public class SerTest { public static int reads,red; public static void main(String[] args) { try { System.out.print("i m ready, call my client"); ServerSocket serverSocket = new ServerSocket(18789); while(true){ Socket clientSocket = serverSocket.accept(); System.out.println(clientSocket+"1"); // outk=new PrintWriter(clientSocket.getOutputStream(),true); BufferedReader bufferedReader; bufferedReader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); }
据我所见,您readLine()在客户端上做outqw.write()的同时在服务器上做。从服务器发送的字符串中没有行尾字符,因此客户端将永远无法完成readLine。执行outqw.println()或添加"\n"到要发送的内容的末尾。话虽这么说,很难用一堆注释掉的东西来浏览未格式化的代码,所以问题可能出在其他地方。
readLine()
outqw.write()
readLine
"\n"