一般的可能原因是:读取数据,一直在等待读取客户端Socket的数据,而Socket里面的数据已经发送完了,服务器端一直不知道。
解决办法:
1.自定义结束标记
客户端:写一个结束的标记
BufferedReader br = new BufferedReader(new FileReader("jiayou\a.txt"));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(S.getOutputStream()));
//读文件,写到客户端
String line;
while ((line=br.readLine())!=null){
bw.write(line);
bw.newline();
bw.flush();
}
bw.write("886");
bw.newline();
bw.flush();
服务器:读取结束的标记,结束while循环
BufferedReader br = new BufferedReader(new InputStreamReader(acc.getInputStream()));
BufferedWriter bw = new BufferedWriter(new FileWriter("jiayou\d.txt"));
while ((i=br.readLine())!=null){
if ("886".equals(i)){
break;
}
bw.write(i);
bw.newline();
bw.flush();
}
2.void shutdownOutput() 禁用此套接字的输出流。调取Socket方法:
客户端:
String line;
while ((line=br.readLine())!=null){
bw.write(line);
bw.newline();
bw.flush();
}
S.shutdownOutput();
服务器:等待读取数据,会读到结束的标记
while ((i=br.readLine())!=null){ //等待读取数据,会读到结束的标记
bw.write(i);
bw.newline();
bw.flush();
}



