2013-03-23 3 views
-1

Я пишу программу клиент-сервер, используя программирование сокетов в Java. Мне нужно отправить несколько значений на сервер. Могу ли я сохранить это значение в объекте структуры и отправить объект структуры на сервер?Array in socket Программирование

+3

Если вы [сериализуете] (http://en.wikipedia.org/wiki/Serialization) правильно. –

+0

Сериализация действительно является ответом. Но внимательно изучите его, лучше сделать это правильно, и есть некоторые подводные камни. Хороший бесплатный материал для этого: google «эффективный java pdf Joshua Bloch» и прочитайте главу о сериализации (или всей книге). – hyde

ответ

1

Вы можете сделать это, используя ObjectOutputStream и ObjectInputStream. Вы можете отправить любой объект, реализующий интерфейс Serializable (также обратите внимание, что любые объекты в объекте также должны его реализовать). Для того, чтобы, например, отправить массив SomeObject, а затем SomeOtherObject:

Например, чтобы отправить массив SomeObject и SomeOtherObject:

ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream()); 
oos.writeObject(new SomeObject[]{new SomeObject(), new SomeObject()}); 
oos.writeObject(new SomeOtherObject()); 

Чтобы их читать:

ObjectInputStream ois = new ObjectInputStream(socket.getInputStream()); 
SomeObject[] obj = (SomeObject[]) ois.readObject(); 
SomeOtherObject someOtherObj = (SomeOtherObject) ois.readObject(); 

Примечание:

+0

Или просто напишите, а затем прочитайте два объекта отдельно. Нет необходимости в массиве. – EJP

+0

@EJP в заголовке есть «Array», поэтому я решил, что это то, что нужно, но вы правы, конечно. – ddmps