Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помощь с эксепшином 
V
    Опции темы
goodday1941
Дата 21.3.2007, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: 1
Всего: 9



вот оный:
Код

java.io.EOFException
    at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2502)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1267)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
    at com.archon.callcenter.admin.CallCenterServerSocket.run(CallCenterServerSocket.java:44)
    at com.archon.callcenter.admin.CallCenterServerSocket.main(CallCenterServerSocket.java:88)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)

возникает при передаче обьекта через сокеты... 

вот сам обьект:
Код

import java.io.File;

public class CreateFileMessage implements java.io.Serializable{
    byte [] bytes;
    File file;

    public CreateFileMessage(byte[] bytes, File file) {
        this.bytes = bytes;
        this.file = file;
    }

    public byte[] getBytes() {
        return bytes;
    }

    public File getFile() {
        return file;
    }
}



--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
Maksym
Дата 21.3.2007, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



goodday1941
Плз, уточни, для других объектов все ок, а с этим пробелмы?
А где сам передающий/принимающий код?
PM MAIL   Вверх
goodday1941
Дата 21.3.2007, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: 1
Всего: 9



передающий:
 
Код

private class ButtonClListener implements ActionListener {
        Socket requestSocket;
        ObjectOutputStream out;
        ObjectInputStream in;
        String message;
        public void actionPerformed(ActionEvent e){
            File file = getExportedFile();
            if (file==null) return;

            FileInputStream fileInputStream = null;
            try {
                fileInputStream = new FileInputStream(file);
            } catch (FileNotFoundException e1) {
                proxy.dialogs.errorDialog("Файл не найден", FileProejctPanel.this);
                return;
            }
            try{
                //1. creating a socket to connect to the server
                requestSocket = new Socket("localhost", 1234);
                System.out.println("Connected to localhost in port 1234");
                //2. get Input and Output streams
                out = new ObjectOutputStream(requestSocket.getOutputStream());
                out.flush();

                byte [] tmp = new byte[(int)file.length()];
                fileInputStream.read(tmp);
                sendMessage(file, tmp);
                in = new ObjectInputStream(requestSocket.getInputStream());
             }
            catch(UnknownHostException unknownHost){
                System.err.println("You are trying to connect to an unknown host!");
            }
            catch(IOException ioException){
                ioException.printStackTrace();
            }
            finally{
                try{
                    in.close();
                    out.close();
                    requestSocket.close();
                }
                catch(IOException ioException){
                    ioException.printStackTrace();
                }
            }
        }

        private File getExportedFile(){
            JFileChooser fileChooser = new JFileChooser(".");
            fileChooser.setMultiSelectionEnabled(false);
            fileChooser.setDragEnabled(false);
            fileChooser.setFileFilter(new CustomFileFilter(".mp3;.wav;.zip", "Sound"));
            fileChooser.showOpenDialog(FileProejctPanel.this);
            return  fileChooser.getSelectedFile();
        }

        private void sendMessage(File file, byte [] bytes)
        {
            try{
                CreateFileMessage test = new CreateFileMessage(bytes, file);
                System.out.println("Отправили файл");
                out.writeObject(test);
                out.flush();
            }
            catch(IOException ioException){
                ioException.printStackTrace();
            }
        }
    }


принимающий:
Код


import com.archon.callcenter.admin.client.ObjectForSocket.CreateFileMessage;

import java.net.ServerSocket;
import java.net.Socket;
import java.io.*;


public class CallCenterServerSocket{
    ServerSocket providerSocket = null;
    Socket connection = null;
    ObjectOutputStream out;
    ObjectInputStream in;
    CallCenterServerSocket(){}
    void run()
    {
        try{
            //1. creating a server socket
            try {
                providerSocket = new ServerSocket(1234);
            } catch (java.net.BindException e) {
                System.out.println("Address already in use");
                System.exit(0);
            }
            //2. Wait for connection
            System.out.println("Waiting for connection");
            connection = providerSocket.accept();
            System.out.println("Connection received from " + connection.getInetAddress().getHostName());
            //3. get Input and Output streams
            out = new ObjectOutputStream(connection.getOutputStream());
            out.flush();
            in = new ObjectInputStream(connection.getInputStream());
            //4. The two parts communicate via the input and output streams
            try{
                Object tmp = in.readObject();
                if (tmp instanceof CreateFileMessage){
                    CreateFileMessage message = (CreateFileMessage)in.readObject();
                    File file = message.getFile();
                    System.out.println(file.getName());
                    byte [] bytes = message.getBytes();
                    for (byte b:bytes)
                        System.out.println(b);
                    FileOutputStream fileOutputStream = new FileOutputStream("c:/tmp/" + file.getName());
                    fileOutputStream.write(bytes);
                }
            }
            catch(ClassNotFoundException classnot){
                System.err.println("Data received in unknown format");
            }

        }
        catch(IOException ioException){
            ioException.printStackTrace();
        }
        finally{
            //4: Closing connection
            try{
                in.close();
                out.close();
                providerSocket.close();
            }
            catch(IOException ioException){
                ioException.printStackTrace();
            }
        }
    }
    void sendMessage()
    {
        try{
            out.writeObject(new String ("server string"));
            out.flush();
        }
        catch(IOException ioException){
        }
    }
    public static void main(String args[])
    {
        CallCenterServerSocket server = new CallCenterServerSocket();
        while(true){
            server.run();
        }
    }
}


Добавлено @ 13:25 
Цитата(Maksym @  21.3.2007,  13:19 Найти цитируемый пост)
Плз, уточни, для других объектов все ок, а с этим пробелмы?

обьект с тремя стригами нормально проходит, а тут что то не то... байт массив имеет размер где то 500 кб...


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
goodday1941
Дата 21.3.2007, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: 1
Всего: 9



кажишь нашел причину, еще не проверял, но :

Код

Object tmp = in.readObject();
                if (tmp instanceof CreateFileMessage){
                    CreateFileMessage message = (CreateFileMessage)in.readObject();

вызывает сомнения... тут скорее всего нужно:
Код


Object tmp = in.readObject();
                if (tmp instanceof CreateFileMessage){
                    CreateFileMessage message = (CreateFileMessage)tmp;


Добавлено @ 13:43 
проблемам заключалась именно в этом!


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0490 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.