从java套接字发送时在整数数组中添加的空白字符串

从java套接字发送时在整数数组中添加的空白字符串,java,arrays,sockets,objectoutputstream,Java,Arrays,Sockets,Objectoutputstream,我试图使用ObjectOutputStream和WriteObject方法从客户端发送一个整数数组,并从服务器接收该数组。以下分别是客户端和服务器代码: 客户: int numberArray [] = new int[]{3,6,1,5,8}; ObjectOutputStream os =new ObjectOutputStream(socket.getOutputStream()); os.writeObject(numberArray); 服务器: ObjectInputStream

我试图使用ObjectOutputStream和WriteObject方法从客户端发送一个整数数组,并从服务器接收该数组。以下分别是客户端和服务器代码:

客户:

int numberArray [] = new int[]{3,6,1,5,8};
ObjectOutputStream os =new ObjectOutputStream(socket.getOutputStream());
os.writeObject(numberArray);
服务器:

ObjectInputStream is = new ObjectInputStream(socket.getInputStream());
int[] Array = (int[])is.readObject();
for (int e : Array) {
 System.out.print(e + " ");
}
客户端可以成功发送阵列。但是,当我尝试读取数组时,会发生以下错误,程序将退出:

3 6 1 5 8 
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:592)
    at java.lang.Integer.parseInt(Integer.java:615)
    at testserver.TestServer.main(TestServer.java:73)
Java Result: 1

谁能告诉我哪里做错了

我不知道在我的android studio或Netbeans中发生了什么奇怪的事情。我已经在一个新的项目中编写了代码,现在它开始工作了!!!! 这是我的完整代码。为了简单起见,上次我没有发布全部代码

但是,在客户机代码中,如果只使用print方法,则控制台中没有输出,但是如果使用println方法,则在控制台中打印数组的内容。有人能解释为什么会发生这种情况吗

服务器

package testserver;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

public class TestServer {

        public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {
        ServerSocket listener;
        InetAddress addr = InetAddress.getLocalHost();
        listener = new ServerSocket(9090,50,addr);        
        try {
            System.out.println("Waiting for Client...!!!");
            while (true) {
                Socket socket = listener.accept();
                try {
                    ObjectInputStream is = new ObjectInputStream(socket.getInputStream());
                    int[] Array = (int[])is.readObject();
                    for (int e : Array) {
                        System.out.print(e + " ");
                    }

                    ObjectOutputStream os =new ObjectOutputStream(socket.getOutputStream());
                    os.writeObject(Array);
                } finally {
                    socket.close();
                }
            }
        }
        finally {
            listener.close();
        }
    }
}
客户

package com.example.asus.clientwitharray;

import android.os.AsyncTask;
import android.util.Log;
import android.widget.TextView;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client extends AsyncTask<Void, Void, Void> {
    String dstAddress;
    int dstPort;
    String response ="";
    TextView textResponse;

    Client(String addr, int port, TextView textResponse) {
        dstAddress = addr;
        dstPort = port;
        this.textResponse = textResponse;
    }

    @Override
    protected Void doInBackground(Void... arg0) {

        Socket socket = null;
        try {
            socket = new Socket(dstAddress, dstPort);
            int numberArray [] = new int[]{2,4,6,1,9};
            ObjectOutputStream os =new ObjectOutputStream(socket.getOutputStream());
            os.writeObject(numberArray);

            ObjectInputStream is = new ObjectInputStream(socket.getInputStream());
            int[] Arr = (int[])is.readObject();
            for (int e : Arr) {
                System.out.println(e);
            }
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            response = "UnknownHostException: " + e.toString();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            response = "IOException: " + e.toString();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            if (socket != null) {
                try {
                    socket.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        textResponse.setText(response);
        super.onPostExecute(result);
    }
}
package com.example.asus.clientwitharray;
导入android.os.AsyncTask;
导入android.util.Log;
导入android.widget.TextView;
导入java.io.IOException;
导入java.io.ObjectInputStream;
导入java.io.ObjectOutputStream;
导入java.net.Socket;
导入java.net.UnknownHostException;
公共类客户端扩展异步任务{
字符串地址;
国际数据传输端口;
字符串响应=”;
文本视图文本响应;
客户端(字符串地址、int端口、TextView textResponse){
dstAddress=addr;
dstPort=端口;
this.textResponse=textResponse;
}
@凌驾
受保护的Void doInBackground(Void…arg0){
套接字=空;
试一试{
套接字=新的套接字(dstAddress,dstPort);
int numberArray[]=新int[]{2,4,6,1,9};
ObjectOutputStream os=新的ObjectOutputStream(socket.getOutputStream());
os.writeObject(numberArray);
ObjectInputStream是=新的ObjectInputStream(socket.getInputStream());
int[]Arr=(int[])是.readObject();
对于(内部e:Arr){
系统输出打印ln(e);
}
}捕获(未知后异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
response=“UnknownHostException:”+e.toString();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
response=“IOException:+e.toString();
}catch(classnotfounde异常){
e、 printStackTrace();
}最后{
if(套接字!=null){
试一试{
socket.close();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
}
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
setText(response);
super.onPostExecute(结果);
}
}

您是否可以发布更多代码?到目前为止,我已经测试了你们所拥有的,并没有任何例外。请提供一个测试,以便我们可以复制这个。看起来您正在从代码调用
parseInt
,但您尚未显示。。。(我不太清楚你是如何从当前的问题中获得5票赞成票的…)