Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2009, 19:11   #1
МаксMorfey
Пользователь
 
Регистрация: 03.01.2009
Сообщений: 18
По умолчанию Помогите разобраться

У меня есть серверная часть которая только принимает
Код:
public void run(){
        try {
            server = new ServerSocket(10001);
            while (true) {
                socketServer=server.accept();
                inStream=socketServer.getInputStream();
                dataInStream=new DataInputStream(inStream);
                str=dataInStream.readUTF();
                System.out.println(str);
                dataInStream.close();
                inStream.close();
            }
        } catch (IOException ex) {
            Logger.getLogger(ServerThread.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
И есть клиентская часть которая отправляет строку это мидлет
Код:
public void startApp() {
        try {
            tfSend = new TextField("Send message", "", 256, 0);
            comSend = new Command("Send", Command.SCREEN, 2);
            form = new Form("Form");
            display = Display.getDisplay(this);
            form.append(tfSend);
            form.addCommand(comSend);
            display.setCurrent(form);
            form.setCommandListener(this);
            sc = (StreamConnection) Connector.open("socket://localhost:10001");
            outStream=sc.openOutputStream();
            dataOutStream=new DataOutputStream(outStream);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

    public void commandAction(Command c, Displayable d) {
        if (c==comSend){
            try {                                            
                dataOutStream.writeUTF(tfSend.getString());
                /*dataOutStream.flush();
                dataOutStream.close();*/
            } catch (IOException ex) {
                ex.printStackTrace();

            }
        }
    }
Первый раз отправляет и сервер принимает без проблем но потом когда я отправляю второй раз он не отправляет а выдает ошибку java.io.IOException: error 0 during TCP write

Помогите разобраться в чем проблема.

Замечание модератора, экранируйте код тегами [code]!

Последний раз редактировалось alexinspir; 21.12.2009 в 13:07.
МаксMorfey вне форума Ответить с цитированием
Старый 21.12.2009, 13:15   #2
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Код просмотрел бегло, проблема вероятнее всего как в серверной части, так и в клиентской(клиент не соответствует серверу).

Вы подцепляетесь клиентом к серверу, отправляете данные, но с учетом того, что у вас сервер не сохраняет существующее соединение а закрывает и ожидает новое, то у вас последующая запись клиентов, в открытый в сокет будет выбрасывать исключение.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться! gameskiller Свободное общение 1 28.11.2009 18:57
Помогите разобраться. littlecoder Общие вопросы Delphi 5 21.12.2008 20:30
Помогите разобраться Toxass Общие вопросы Delphi 2 18.12.2008 16:57
Помогите разобраться с С++ igroman Общие вопросы C/C++ 1 03.08.2008 23:15