【发布时间】:2017-05-10 20:39:58
【问题描述】:
从文件读取数据并发送到服务器的客户端代码
public class Step2Client {
public static void main( String args[ ] ) throws Exception
{
String ip="localhost";
int port=9999;
Socket s=new Socket(ip,port);
String line="";
Scanner scanner=new Scanner(System.in);
OutputStreamWriter os=new OutputStreamWriter(s.getOutputStream());
PrintWriter out=new PrintWriter(os);
FileReader fileReader =new FileReader("input.txt");
// Always wrap FileReader in BufferedReader.
BufferedReader bufferedReader = new BufferedReader(fileReader);
while((line = bufferedReader.readLine()) != null) {
out.println(line);
System.out.print(line);
}
}
}
客户端逐行发送打印数据的服务器代码:
public class Step2Server {
public static void main(String args[]) throws Exception
{
ServerSocket ss=new ServerSocket(9999);
Socket s=ss.accept();
StringBuilder stringBuilder=new StringBuilder();
InputStreamReader inputStream=new InputStreamReader(s.getInputStream());
BufferedReader br=new BufferedReader(inputStream);
String line = null;
do {
line = br.readLine ();
stringBuilder.append(line);
} while (line != null);
System.out.print(stringBuilder.toString());
}
}
但是有以下错误
Exception in thread "main" java.net.SocketException: Connection reset
at Step2Server.main(Step2Server.java:20)
【问题讨论】:
-
写入后不要忘记刷新输出流,在客户端完成后关闭输出流和套接字。服务端的 ServerSocket 和 Socket 也应该关闭。
-
@fireandfuel 在关闭之前刷新是多余的,就像在关闭其流之一后关闭套接字一样。他只需要关闭
PrintWriter。