如何解决Socket Net Exception - 我想与 mer 服务器同时接收对象和数组列表
我想与 mer 服务器同时接收对象和数组列表。以下是发送方的代码。
我正在尝试传递信用卡号 - 我希望它在接收方服务器中得到验证,然后再次将卡的有效信息发送回发送方。我想使用同一个程序同时传递 arraylist 的对象,我想确保这不会妨碍这一点。
发件人:
try {
int portNo=3990;
InetAddress serverAddress=InetAddress.getLocalHost();
Socket socket=new Socket(serverAddress,portNo);
ObjectOutputStream ObjectOS=new ObjectOutputStream(socket.getOutputStream());
ObjectOS.writeObject(OrderedItem);
ObjectOS.flush();
DataOutputStream dout=new DataOutputStream(socket.getOutputStream());
dout.writeUTF(textFieldCreditCard.getText());
dout.flush();
dout.close();
DataInputStream dis=new DataInputStream(socket.getInputStream());
String str=(String)dis.readUTF();
System.out.println("message= "+str);
ObjectInputStream ObjectIS=new ObjectInputStream(socket.getInputStream());
OrderedItem=(List<OrderedItem>)ObjectIS.readObject();
ObjectOS.close();
ObjectIS.close();
socket.close();
}
catch(IOException|ClassNotFoundException ex) {
ex.printStackTrace();
}
接收器:
编译器说错误在这一行:检查我下面粘贴的错误:ObjectOutputStream objectOS = new ObjectOutputStream(socket.getOutputStream());
但是,我想保留这一行,因为稍后我可能需要传递 arraylist
Or 对象。
public class Server {
public static void main(String[] args) {
try {
int portNo=3990;
ServerSocket serverSocket=new ServerSocket(portNo);
while(true) {
Socket socket= serverSocket.accept();
ObjectInputStream ObjectIS= new ObjectInputStream(socket.getInputStream());
List<OrderedItem> S=(List<OrderedItem>)ObjectIS.readObject();
DataInputStream dis=new DataInputStream(socket.getInputStream());
String str=(String)dis.readUTF();
System.out.println("Credit Card Number= "+str);
if(str.length()==14) {
DataOutputStream send=new DataOutputStream(socket.getOutputStream());
send.writeUTF("Card Valid");
}
else {
DataOutputStream send=new DataOutputStream(socket.getOutputStream());
send.writeUTF("Card Invalid. Card Number must be 14 Digits");
}
for(OrderedItem s:S)
System.out.println(s.getSubTotalAmount());
ObjectOutputStream objectOS = new ObjectOutputStream(socket.getOutputStream());
}
}
catch(IOException|ClassNotFoundException ex){
ex.printStackTrace();
}
}
}
错误:
java.net.SocketException: Software caused connection abort: socket write error
at java.base/java.net.SocketOutputStream.socketWrite0(Native Method)
at java.base/java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:110)
at java.base/java.net.SocketOutputStream.write(SocketOutputStream.java:150)
at java.base/java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1883)
at java.base/java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1792)
at java.base/java.io.ObjectOutputStream.<init>(ObjectOutputStream.java:248)
at Server.main(Server.java:68)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。