Как отправить и получить целочисленный массив от клиента к серверу в программировании сокетов Java? - PullRequest
0 голосов
/ 20 марта 2009

У меня проблема с отправкой задания (целочисленного массива) с клиента на сервер в двух разных пакетах через сокетное соединение. Есть идеи, пожалуйста?

Я могу объяснить дальше, если мой вопрос недостаточно ясен.

Ответы [ 4 ]

4 голосов
/ 20 марта 2009

Чтобы ответить на вопрос в вашем заголовке, я бы обернул SocketOutputStream в BufferedOutputStream в DataOutputStream и использовал бы метод writeInt() последнего несколько раз. Или вы можете использовать ObjectOutputStream вместо DataOutputStream и сериализовать массив: objOutStream.writeObject(theArray). Чтобы прочитать его снова на другом конце, просто оберните SocketInputStream в (1) a DataInputStream и используйте readInt() несколько раз, или (2) a ObjectInputStream и используйте readObject().

(Если вам не нужно взаимодействовать с другими языками, Object*Stream вам проще)

2 голосов
/ 20 марта 2009

Вам нужно отправить его в виде массива? Это усложняет весь процесс. Почему бы не обернуть его в коллекцию или в какой-то список? То есть:

ObjectOutputStream oos = new ObjectOutputStream(...);
oos.writeObject(integerCollection);



ObjectInputStream ois = new ObjectInputStream(...);
Collection integerCollection = (Collection)ois.readObject();
0 голосов
/ 08 июня 2011

Какой протокол вы используете для отправки этих данных по вашей ссылке? Вы можете заключить ваш массив в объект, который можно сериализовать в выходной поток.

TCP: В этом случае все должно быть довольно просто. Транспортный уровень позаботится о фрагментации вашего объекта и получении его прямо на другом конце ссылки.

UDP: Все может стать немного сложнее; Если объект, который вы пытаетесь сериализовать, больше, чем буферы UDP (в байтах), вы не сможете получить данные. В этой ситуации вы можете отправлять данные порциями, размер которых меньше размера буфера UDP по умолчанию.

С уважением,

0 голосов
/ 28 ноября 2009

с помощью

ArrayList a=new ArrayList(n)    //n represents size

или

List a=new List()

мы можем отправить на сервер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...