Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java套接字、客户端和服务器_Java_Jsp_Sockets_Client - Fatal编程技术网

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

Java套接字、客户端和服务器,java,jsp,sockets,client,Java,Jsp,Sockets,Client,我想为客户端和服务器做一个套接字连接,以显示文件列表。但下面的代码并没有从服务器获取任何输入,也并没有向客户端提供输出。请帮忙 服务器 package javaapplicationthread; import java.net.ServerSocket; import java.net.Socket; import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import jav

我想为客户端和服务器做一个套接字连接,以显示文件列表。但下面的代码并没有从服务器获取任何输入,也并没有向客户端提供输出。请帮忙

服务器

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());
        }

    }}

在客户端中,当您执行redd=b.readLine时;你要求读一整行。但在服务器中,您没有发送整行:您只要求它写三个字符:

outk.write("abc");
但是,这三个字符实际上都没有发送,因为PrintWriter会临时缓冲它们。要解决此问题,请将该行更改为:

outk.println("abc");
或:

更改后,客户端成功显示:结果为abc

它没有给出任何错误


他们两个都犯了错误。。。当readLine调用失败时,客户端抛出异常。当服务器开始whiletrue循环的下一次迭代并尝试重新创建它仍在使用的套接字时,会引发异常。您可能希望将ServerSocket的创建移到while循环之外。

欢迎使用StackOverflow。在这里发布代码并说它不起作用不是一个有效的问题。Brian Roach-我在哪里说过它起作用的?它没有给出任何错误,如果我单独运行traverseFile parentNode、String leftIndent函数,它就可以工作了。。但是当我使用套接字时,所有内容都被阻塞了。您需要关闭服务器和客户端中的套接字,并且您需要创建服务器套接字一次,而不是每个循环创建一次。EJP谢谢您的帮助。您的最后一段不正确。首先,服务器失败,尝试将新的ServerSocket绑定到它已经使用的端口,这会导致它退出,这会重置连接,这会导致readLine失败并引发SocketException。
outk.write("abc\n");
outk.flush();