Java 如何在循环中通过服务器发送线路?

Java 如何在循环中通过服务器发送线路?,java,Java,在上面的代码中,我试图从服务器读取一行,并在客户端计算机上打印该行。但在服务器完成所有行的写入并关闭之前,客户端无法读取该行。请帮助我如何一次从服务器读取一行。检查服务器是否在每行之后刷新其输出流。客户端代码: Socket s1=new Socket("localhost",3001); System.out.println("Client process"); byte b[]=new byte[150]; int n=4; BufferedReader BR=new BufferedRea

在上面的代码中,我试图从服务器读取一行,并在客户端计算机上打印该行。但在服务器完成所有行的写入并关闭之前,客户端无法读取该行。请帮助我如何一次从服务器读取一行。

检查服务器是否在每行之后刷新其输出流。

客户端代码:

Socket s1=new Socket("localhost",3001);
System.out.println("Client process");
byte b[]=new byte[150];
int n=4;
BufferedReader BR=new BufferedReader(new InputStreamReader(s1.getInputStream()));
String str=new String();
while((str=BR.readLine())!=null)
{
    System.out.println();
    System.out.println(str);
}
s1.close();
简单服务器代码:

Socket s1=new Socket("localhost",4444); 
    System.out.println("Client process"); 
    byte b[]=new byte[150]; 
    int n=4; 
    BufferedReader BR= new BufferedReader(new InputStreamReader(s1.getInputStream())); 
    String str=new String(); 
    while((str=BR.readLine())!=null) {     
        System.out.println();     
        System.out.println(str); 
    } 
    s1.close(); 
ServerSocket-ServerSocket=null;
试试{
serverSocket=新的serverSocket(4444);
}
捕获(IOE异常){
System.err.println(“无法侦听端口:4444”);
系统出口(1);
}          
套接字clientSocket=null;
试试{
clientSocket=serverSocket.accept();
}
捕获(IOE){
System.err.println(“接受失败”);
系统出口(1);
}           
PrintWriter out=新的PrintWriter(clientSocket.getOutputStream(),true);
BufferedReader in=新的BufferedReader(
新的InputStreamReader(clientSocket.getInputStream());
字符串输入行、输出行;
//写信给客户

对于(int i=0;我可以修改服务器代码吗?。如果可以,请也显示该代码。ServerSocket s1=new ServerSocket(3001);Socket ClientSocket=s1.accept();RandomAccessFile Ra=new RandomAccessFile(“C:/HelloWorld.java”,“r”);OutputStream OS=ClientSocket.getOutputStream();String str=new String(“hai”);BufferedReader BR=new BufferedReader(新的InputStreamReader(System.in));while((str=Ra.readLine())!=null){System.out.println(str);BR.read();OS.write(str.getBytes());}ClientSocket.close();您是否偶然使用了
nio
?代码应该使用常规的
io
。您是否遇到了一些无法捕获的异常?您的代码与上一次的代码几乎相同?不,我在任何地方都没有使用nio。我的客户端程序每次读取服务器写入的所有数据时都会读取一行代码。但我想重新开始你的服务器端代码似乎是客户端和服务器端代码的奇怪组合,请通过查看示例来了解你在做什么。
ServerSocket serverSocket = null;        
    try {             
        serverSocket = new ServerSocket(4444); 
        }
    catch (IOException e) {
        System.err.println("Could not listen on port: 4444.");   
        System.exit(1);      
    }          
    Socket clientSocket = null; 
    try {        
        clientSocket = serverSocket.accept();
    }
    catch (IOException e) { 
        System.err.println("Accept failed.");  
        System.exit(1);   
    }           
    PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); 
    BufferedReader in = new BufferedReader(  
            new InputStreamReader(clientSocket.getInputStream()));
    String inputLine, outputLine; 
    // write to client
    for(int i=0;i<10;i++){
        out.println("hello from server" + i);
        Thread.sleep(1000);
        System.out.println("Server sent " + i);
    }

    out.close();         
    in.close();         
    clientSocket.close();         
    serverSocket.close();     
    System.err.println("Server done.. closing now..");