简体   繁体   English

发送一个 ArrayList<String> 使用套接字通过 TCP 从服务器端到客户端?

[英]Sending an ArrayList<String> from the server side to the client side over TCP using socket?

I'm trying to send one object from the server side socket to the client side socket over TCP.我正在尝试通过 TCP 将一个对象从服务器端套接字发送到客户端套接字。 I can't find out where is the problem.我无法找出问题出在哪里。

Here is the error I'm getting on the Client side:这是我在客户端遇到的错误:

java.io.EOFException
    at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2280)
    at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2749)
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:779)
    at java.io.ObjectInputStream.<init>(ObjectInputStream.java:279)
    at ClientSide.main(ClientSide.java:16)

Code for Server side:服务器端代码:

import java.io.*;
import java.net.*;
import java.util.ArrayList;

public class ServerSide {

    public static void main(String[] args) {
        try
        {
            ServerSocket myServerSocket = new ServerSocket(9999);
            Socket skt = myServerSocket.accept();   
            ArrayList<String> my =  new ArrayList<String>();
            my.set(0,"Bernard");
            my.set(1, "Grey");
            try 
            {
                ObjectOutputStream objectOutput = new ObjectOutputStream(skt.getOutputStream());
                objectOutput.writeObject(my);               
            } 
            catch (IOException e) 
            {
                e.printStackTrace();
            } 
        }
        catch (IOException e) 
        {
            e.printStackTrace();
        }
    }

}

Code for the Client Side:客户端代码:

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.ArrayList;


public class ClientSide {

    public static void main(String[] args)
    {
        try {       
            Socket socket = new Socket("10.1.1.2",9999);
            ArrayList<String> titleList = new ArrayList<String>();
            try {
                ObjectInputStream objectInput = new ObjectInputStream(socket.getInputStream()); //Error Line!
                try {
                    Object object = objectInput.readObject();
                    titleList =  (ArrayList<String>) object;
                    System.out.println(titleList.get(1));
                } catch (ClassNotFoundException e) {
                    System.out.println("The title list has not come from the server");
                    e.printStackTrace();
                }
            } catch (IOException e) {
                System.out.println("The socket for reading the object has problem");
                e.printStackTrace();
            }           
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }   
    }   
}

Changing from set to add does the trickset更改为add可以解决问题

ArrayList<String> my =  new ArrayList<String>();
my.add("Bernard");
my.add("Grey");

ps.附: as advised by the others this is not a good idea but, use only for learning正如其他人所建议的,这不是一个好主意,但仅用于学习

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用TCP over socket将ArrayList从服务器端发送到客户端 - Sending ArrayList from server side to client side using TCP over socket 客户端未向服务器 Java Socket 发送消息 - Client side is not sending message to server Java Socket 套接字客户端-服务器发送到服务器端后卡住 - Socket Client-Server gets stuck after sending to server side 应用程序挂在套接字上,无法在服务器端读取客户端数据 - Application Hangs over the socket, Unable to read client data at server side 从服务器向客户端(TCP)发送序列化对象的ArrayList - Sending an ArrayList of serialized objects to client (TCP) from server 通过TCP套接字将对象从Java服务器发送到android客户端 - sending objects through TCP socket from java server to android client 使用http&#39;POST&#39;从服务器端发送多个文件-发送FileInputStream的ArrayList - Sending several files from server side using http 'POST' -send ArrayList of FileInputStream 使用rest服务将文件从服务器端发送到客户端 - send a file from the server side to the client side using rest service Java Socket 服务器 - 客户端; 卡在服务器端 - Java Socket Server - Client; Stuck on Server side Java TCP在同一套接字的客户端和服务器端之间发送和接收多个消息 - Java TCP send and receive multiple messages between client & server side on same socket
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM