当前位置: 首页 > 知识库问答 >
问题:

在java套接字编程中从服务器向客户端发送文件列表-PrintWriter不能发送?

诸葛雅达
2023-03-14

我如何发送文件清单从服务器使用套接字编程客户机。我使用了DataOutputStream和PrintWriter,两者都只向客户端返回一个文件名。我知道'\n'中有些问题。却无法解决。等待专家的建议...谢谢。

switch (choice) {

.......

  case 2: // for viewing files in the client's directory
  Socket mysocket = new Socket("localhost", 6103);
  String user_name = username;
  DataOutputStream outToServer2= new DataOutputStream(mysocket.getOutputStream());
  outToServer2.writeBytes(user_name + '\n');
  BufferedReader inFromServer2 = new BufferedReader(newInputStreamReader(mysocket.getInputStream()));
  String list = inFromServer2.readLine();
  System.out.println("FROM SERVER - LIST OF FILES:" + list);

  break;

}

.......
import java.io.*;
import java.net.*;

class DirList
{
   public static void main(String argv[]) throws Exception
      {
         String clientSentence;
         String capitalizedSentence;
         ServerSocket welcomeSocket = new ServerSocket(6103);

         while(true)
         {
            Socket connectionSocket = welcomeSocket.accept();
            BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
            PrintWriter outToClient = new PrintWriter(connectionSocket.getOutputStream(),true);
            clientSentence = inFromClient.readLine();
            System.out.println("Received view files request from user: " + clientSentence);
            String path = "/home/user/Files/";
            String userdir = path + clientSentence;
            String text="";
            String capitalizedSentence1;
            File f = new File(userdir);
                File[] listOfFiles = f.listFiles();
                for (int j = 0; j < listOfFiles.length; j++) {
                        if (listOfFiles[j].isFile()) {
                                text = listOfFiles[j].getName();
                                outToClient.println(text);
                                System.out.print(text+' ');

                   }
                }


         }
      }
}

共有1个答案

葛承教
2023-03-14

您需要刷新服务器的输出:

outToClient.flush();

此外,在客户机中,您需要将读取放在循环中以使用所有输出:

String line = null;
while ((line = inFromServer2.readLine()) != null) {
   System.out.println(line);
}
 类似资料:
  • 我也试图从Java服务器和Python客户机传输数据。我成功地将数据从客户端传输到服务器,但根本没有接收到数据。 在python客户机上,我有以下内容:(注意,这是在一个单独的线程中运行的) 如果这是成功的工作,输出将是客户端套接字值,等待服务器,然后得到一些数据。然而,它正陷入等待数据的困境。 这意味着套接字显然不是None,它正在等待缓冲区接收?我将接收缓冲区大小设置为1,以查看是否有任何数据

  • 我正在创建我的产品,并与这个问题。有一天,我设置了Socket.io,一切都很好。第二天,我将服务器和客户端从http迁移到HTTPS。迁移后客户端和服务器端仍然连接,但不能从客户端发射到服务器,从服务器发射到客户端。 我的ssl证书位于和中,它们加载正确。运行在上的服务器 我的示例react组件。我的react应用程序运行在上。HTTPS连接良好,工作良好。 我该怎么办?也许我在中错误地使用了s

  • 我有一个关于Java插座的技术问题。 例如,假设我有一个Java Sockets服务器和n个多个客户端。是否可以几乎实时地将数据从服务器发送到任何或所有客户端? 更准确地说: 有哪种监听器可以在Sockets客户端中实现 有人能告诉我什么方法是最好的吗?此外,如果有人有一个代码示例,我也会很高兴。 谢谢

  • 我正试图从套接字服务器(Java)向套接字客户端(Python)发送一个映像,但客户端中接收到的映像大小不正确,无法打开。我不知道我做错了什么。有什么建议吗?

  • 我正在使用网络库和浏览器上的WebSocket实现一个套接字节点服务器。我正在成功使用telnet,但浏览器工作不正常。浏览器成功连接到套接字服务器并发送消息。我的服务器实现了一个事件,并立即触发和事件<代码>关闭,事件在断开连接时执行删除客户端(关闭浏览器,连接松动…)。 我不希望浏览器发送消息,然后断开连接。有人知道问题出在哪里吗? 套接字服务器 客户端(浏览器) 浏览器连接到服务器时的输出

  • 我对Android系统是新手。我有一个客户端类,我的主要活动引用。client类将客户端套接字连接到充当服务器的外部设备,但是它从不将我试图发送的消息发送到服务器。我知道这不是连接,因为在创建套接字时,我将setKeepAlive()设置为true,当我试图发送消息时不会引发异常,socket.isconnected()返回true,如果我试图在发送消息之前连接套接字,它会引发“已经连接”的异常。