【问题标题】:I want to read a string array using bufferedreader我想使用 bufferedreader 读取字符串数组
【发布时间】:2015-10-04 13:42:21
【问题描述】:

我有一个客户端类,它使用 PrintWriter 发送一个字符串数组,然后服务器类应该能够接收这些值,但我找不到从字符串数组读取的解决方案。

客户端类:

    public Client(String[] data) throws IOException {
    connectToServer();
    out.println(data);
    }

public void connectToServer() throws IOException {
String serverAddress = "localhost";
Socket socket = new Socket(serverAddress,9898);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(),true);
}

服务器类: (这是服务器读取客户端发送的任何内容的方法)

public void run(){
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(),true);

//this is my problem: i can't read the value from the array using this code
while(true){
String input = in.readLine();
if(input == null) break;
}

【问题讨论】:

  • "... but I can't find a solution in reading from a string array" -- 解决方案是您需要自己编写代码。让我们看看您的客户端代码和您的服务器尝试。如果你展示它并且如果你用代码讨论你的具体问题,那么我们应该能够轻松地帮助你。
  • 嗨 phoenixWright,你的问题太宽泛了。您应该首先使用tour 并阅读How do I ask a good question?。请包括编写字符串数组的代码、结果文本和尝试读取文本的代码。并尝试找出阅读代码中的具体问题。
  • 另外......值得注意的是,在将读取内存数据的Reader 周围包裹一层额外的缓冲层的好处为零。
  • @HovercraftFullOfEels 对此感到抱歉,我现在包含了我的代码
  • 感谢您的更新。如果对我的回答有任何疑问,请询问。

标签: java arrays bufferedreader printwriter


【解决方案1】:

你这里有问题:

public Client(String[] data) throws IOException {
    connectToServer();
    out.println(data);
}

这将通过套接字发送无意义的数据,即字符串数组的toString() 表示形式,如果客户端发送无意义的数据,服务器将只读取相同的数据。而是使用 for 循环将数据作为单独的字符串发送。

public Client(String[] data) throws IOException {
    connectToServer();
    for (String line : data) {
        out.println(line + "\n");
    }
}

或者我想您可以使用 ObjectOutputStream,然后只发送整个数组,但无论哪种方式,都不要做您最初正在做的事情。

【讨论】:

  • 我没想过要找到使用 Client 类的方法。谢谢!
  • @phoenixWright:很高兴它有所帮助,再次感谢您改进您的问题。
猜你喜欢
  • 2013-01-08
  • 2015-10-03
  • 1970-01-01
  • 2016-01-02
  • 2014-10-11
  • 1970-01-01
  • 1970-01-01
  • 2013-03-20
  • 2019-05-27
相关资源
最近更新 更多