[英]Read multiple data from client socket
客户端代码,用于从文件读取数据并将其发送到服务器
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)
您的客户端没有关闭套接字,因此当退出套接字时,它将对其进行重置。 它必须在Windows上运行。 您应该在到达输入文件的末尾之后调用out.close()
。
注意您的读取循环不正确。 它应该是:
while ((line = br.readLine()) != null) {
stringBuilder.append(line);
}
目前,您将最终的null
附加到StringBuilder
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.