|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.10.2011, 14:23 | #1 |
Форумчанин
Регистрация: 29.11.2009
Сообщений: 142
|
Передача объекта
Правильно ли я сделал, если хотел получить как результат передачу объекта от клиента - серверу. И, как я понял,и на сервере, и на клиенте должен быть реализован класс, объект которого я передаю ?
клиент: Код:
Код:
|
22.10.2011, 19:42 | #2 |
Пользователь
Регистрация: 16.02.2010
Сообщений: 26
|
да, ты правильно понимаешь обычно общие классы классы, кот. используются на сервере и клиенте выносят в общую библиотеку (jar файл).
|
19.06.2012, 21:20 | #3 |
Новичок
Джуниор
Регистрация: 19.06.2012
Сообщений: 1
|
Есть проблема.
По месному примеру написал код Клиент package mycliente; import java.net.*; import java.io.*; public class MyCliente { public static Object toObject(byte[] bytes) { Object obj = null; try { ByteArrayInputStream bis = new ByteArrayInputStream(bytes); ObjectInputStream ois = new ObjectInputStream(bis); obj = ois.readObject(); } catch (IOException ex) { //TODO: Handle the exception } catch (ClassNotFoundException ex) { //TODO: Handle the exception } return obj; } public static void main(String[] args) { String serverIP = "192.168.3.100"; int port = 3001; Socket fromserver = null; try { fromserver = new Socket(serverIP, port); BufferedInputStream bis = new BufferedInputStream(fromserver.getI nputStream()); ObjectInputStream ois = new ObjectInputStream(bis); System.out.println("Client in connect"); MyObject myo = (MyObject) ois.readObject(); System.out.println(myo.getFileName( )); } catch (Exception e) { e.printStackTrace(); } } } Сервер package myserver; import java.net.*; import java.io.*; public class MyServer { public static byte[] toByteArray (Object obj) { byte[] bytes = null; ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { ObjectOutputStream oos = new ObjectOutputStream(bos); oos.writeObject(obj); oos.flush(); oos.close(); bos.close(); bytes = bos.toByteArray (); } catch (IOException ex) { //TODO: Handle the exception } return bytes; } public static void main(String[] args) throws IOException { int PORT = 3001; MyObject mo = null; String fName = "1.txt"; File f = new File(fName); byte [] fileToByteArr = null; if(f.exists()&&f.isFile()) fileToByteArr = toByteArray(f); mo = new MyObject (fName,fileToByteArr); Socket fromclient = null; try { ServerSocket serverSocket = new ServerSocket(PORT); fromclient = serverSocket.accept(); System.out.println("Client accessed"); BufferedOutputStream bos = new BufferedOutputStream (fromclient.getOutputStream()); ObjectOutputStream oos = new ObjectOutputStream(bos); oos.writeObject(mo); oos.flush(); oos.close(); fromclient.close(); } catch (Exception e) { System.out.println("Error: \n"); } finally { if (fromclient != null) { fromclient.close(); } } } } Объект import java.io.Serializable; public class MyObject implements Serializable { private String myFileName; private int myFileSize; private byte[] myFileContent = null; public MyObject(String fileName, byte[] content) { this.myFileName = fileName; this.myFileContent = content; this.myFileSize = content.length; } public String getFileName(){ return myFileName; } public int getFileSize(){ return myFileSize; } } Логика такова.. передать файл, преврашенный в байт массив, обернутый обернутый в объект от сервера - клиенту. Запуск сервера проходит нормально, запуск клинта выкидывает стект ошибок Client in connect java.lang.ClassNotFoundException: myserver.MyObject (сокращу до минимума) at java.io.ObjectInputStream.resolveCl ass(ObjectInputStream.java:622) at java.io.ObjectInputStream.readNonPr oxyDesc(ObjectInputStream.java:1593 ) at java.io.ObjectInputStream.readClass Desc(ObjectInputStream.java:1514) at java.io.ObjectInputStream.readOrdin aryObject(ObjectInputStream.java:17 50) at java.io.ObjectInputStream.readObjec t0(ObjectInputStream.java:1347) at java.io.ObjectInputStream.readObjec t(ObjectInputStream.java:369) at mycliente.MyCliente.main(MyCliente. java:46) (46 строка в ктиента) MyObject myo = (MyObject) ois.readObject(); Буду рад обым подсказкам и помощи. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Передача объекта в функцию, и его деструкторы | Janym | Общие вопросы C/C++ | 53 | 28.02.2011 20:47 |
Передача метода объекта. | the_deer_one | Общие вопросы C/C++ | 8 | 09.09.2010 15:07 |
Передача имени объекта в процедуру (Потоки) Delphi | edmynt | Помощь студентам | 3 | 03.02.2010 20:58 |
Передача объекта в функцию | Юра_YUYU | Общие вопросы C/C++ | 14 | 18.01.2010 16:00 |
Передача поля объекта в процедуру в качестве параметра | Голованов Д. | Microsoft Office Excel | 10 | 02.11.2009 16:22 |