gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:35:45 26 4
gpt4 key购买 nike

我正在尝试使用 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 工作室或 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);
}
}

关于java - 从 java 套接字发送时在整数数组中添加空白字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43814969/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com