我想为客户端和服务器执行套接字连接以显示文件列表。但是代码下方没有从服务器获取任何输入或向客户端提供输出。请帮忙。
服务器
package javaapplicationthread;
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.PrintWriter;
public class zs {
public static int reads,red;
public static void main(String[] args)
{
int flg=0;
try{while(true){
ServerSocket serverSocket = new ServerSocket(1312);
Socket clientSocket = serverSocket.accept();
BufferedReader bufferedReader;
PrintWriter outk=new PrintWriter(clientSocket.getOutputStream(),true);
bufferedReader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String inputLine = bufferedReader.readLine();
System.out.println("input is"+ inputLine);
outk.write("abc");
File inputFolder = new File(inputLine);
System.out.println("control is being sent to traverse");
traverse(inputFolder, "");
}
}
catch (IOException ex) {
System.out.println("my exception is"+ex)
System.out.println(leftIndent + parentNode.getName());
}
}}
答案 0 :(得分:0)
在客户端,当您执行redd = b.readLine();
时,您要求阅读整行。但是在服务器中你没有发送整行:你只要求它写三个字符:
outk.write("abc");
然而,这三个字符实际上都没有发送,因为PrintWriter会暂时缓冲它们。要解决此问题,请将该行更改为:
outk.println("abc");
或者:
outk.write("abc\n");
outk.flush();
更改后,客户端成功显示:result is abc
。
它没有给出任何错误
他们都给出了错误......当readLine调用失败时,客户端抛出异常。服务器在开始while(true)
循环的下一次迭代时抛出异常并尝试重新创建它仍在使用的套接字。您可能希望在while循环之外移动ServerSocket的创建。