JSp

Java套接字,客户端和服务器

发布于 2021-02-01 16:25:22

我想为客户端和服务器建立套接字连接以显示文件列表。但是下面的代码不会从服务器获取任何输入或将输出提供给客户端。请帮忙。

服务器

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
被浏览
103
1 个回答
  • 面试哥
    面试哥 2021-02-01
    为面试而生,有面试问题,就找面试哥。

    在客户端,当您这样做时,redd = b.readLine();您要求阅读整行。但是在服务器中,您没有发送整行:您只要求它写三个字符:

    outk.write("abc");
    

    但是,实际上这三个字符都不发送,因为PrintWriter会临时缓冲它们。要解决此问题,请将该行更改为:

    outk.println("abc");
    

    要么:

    outk.write("abc\n");
    outk.flush();
    

    更改之后,客户端成功显示:result is abc

    它没有给出任何错误

    它们都给错误…readLine调用失败时,客户端引发异常。服务器在开始while(true)循环的下一次迭代并尝试重新创建仍在使用的套接字时会引发异常。您可能想将ServerSocket的创建移到while循环之外。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看