Форум программистов, компьютерный форум, киберфорум
Java: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для waip
7 / 7 / 1
Регистрация: 27.05.2011
Сообщений: 297

Зависает создание экземпляра сокета

06.11.2014, 11:38. Показов 1466. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется большое приложение поэтому показываю именно проблемную часть. Пишу клиент-серверное приложение. Сервер консольный, клиент графический.
Клиент:
После того как появилась пользовательская форма идет подключение к серверу...
В коде это выглядит так
Java
1
2
3
4
5
    
private void jLabel1AncestorAdded(javax.swing.event.AncestorEvent evt) {                                      
 
        Network.getInstance();
}
Как описан класс Network

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
public class Network {
    private Socket ss;
    private BufferedReader reader;
    private BufferedWriter writer;
    
    public Network(){
        try{
            ss = new Socket("127.0.0.1",39190);
            reader = new BufferedReader(new InputStreamReader(ss.getInputStream()));
            writer = new BufferedWriter(new OutputStreamWriter(ss.getOutputStream()));
            }catch(Exception ex){
               MathClientApp.getApplication().mcv.getLabel2().setText("Извините, попробуйте в другой раз");
            }
        Thread t = new Thread(new Runnable() {
 
            @Override
            public void run() {
                try {
                    String msg;
                    while((msg = reader.readLine())!=null){
                        handlePacket(msg);
                    }
                } catch (IOException ex) {
  
                }
            }
        });
        t.start();
    }
    
    public void handlePacket(String msg){
        if(msg.contains("/WARNING") && msg.contains("WARNING/")){
            msg = msg.replaceAll("/WARNING", "");
            msg = msg.replaceAll("WARNING/", "");
            System.out.println(msg);
            String[] _p = msg.split("/BR/");
            MathClientApp.getApplication().mcv.addNotice(_p[1], _p[2]);
        }
        if(msg.contains("/PERSONAL/")){
            msg = msg.replaceAll("/PERSONAL/", "");
            MathClientApp.getApplication().mcv.showPersonalInfo(msg.split("BR"));
        }
        if(msg.contains("/TEST-SUBJ")){
            msg = msg.replaceAll("/TEST-SUBJ", "");
            msg = msg.replaceAll("TEST-SUBJ/", "");
            MathClientApp.getApplication().mcv.showTestSubj(msg.split("/BR/"));
        }
        if(msg.contains("/TEST-TOPIC")){
            msg = msg.replaceAll("/TEST-TOPIC", "");
            msg = msg.replaceAll("TEST-TOPIC/", "");
            MathClientApp.getApplication().mcv.showTestTopic(msg.split("/BR/"));
        }
        if(msg.contains("/QUESTION")){
            msg = msg.replaceAll("/QUESTION", "");
            msg = msg.replaceAll("QUESTION/", "");
            MathClientApp.getApplication().mcv.addQuestion(msg.split("BR"));
        }
        if(msg.equals("EOF-QUESTION")){
            MathClientApp.getApplication().mcv.showTestInfo();
        }
        
    }
    public void sendPacket(String msg){
        try {
            writer.append(msg);
            writer.newLine();
            writer.flush();
        } catch (IOException ex) {
            Logger.getLogger(Network.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public static Network getInstance() {
        return NetworkHolder.INSTANCE;
    }
    public boolean isConnected(){
        if(ss != null){
            return true;
        }
        return false;
    }
    
    private static class NetworkHolder {
 
        private static final Network INSTANCE = new Network();
    }
}
Проблема возникает в этом месте:
ss = new Socket("127.0.0.1",39190);

Проверил таким образом. До и после этой инструкции поставил операторов вывода и оказалось, что стопорит именно тут.

Проблема заключается в том что это приложение хорошо работает у меня на ноутбуке(7-ка), однако не работает в другом месте(возникает зависание). Сразу скажу что брандмауэр и антивирус были выключены... На стационарной машине приложение успешно запустил под джавой 1.6.... но возникла проблема со стилями и пришлось поставить 7ую.. и тут возник этот ВИСЯК... Тоесть вообще никак не хочет конектить.. зависает и все... Я для теста написал простенький серверсокет и обычный... на этой машине они нормально конектятся... а вот приложение виснет в этом месте... я залез в jconsole.. вот трасировка.. может чем поможет..

Name: AWT-EventQueue-0
State: RUNNABLE
Total blocked: 39 Total waited: 37

Stack trace:
java.net.SocketInputStream.socketRead0(N ative Method)
java.net.SocketInputStream.read(SocketIn putStream.java:150)
java.net.SocksSocketImpl.readSocksReply( SocksSocketImpl.java:123)
java.net.SocksSocketImpl.connect(SocksSo cketImpl.java:459)
java.net.Socket.connect(Socket.java:579)
java.net.Socket.connect(Socket.java:528)
java.net.Socket.<init>(Socket.java:425)
java.net.Socket.<init>(Socket.java:208)
mathclient.Network.<init>(Network.java:2 8)
mathclient.Network$NetworkHolder.<clinit >(Network.java:106)
mathclient.Network.getInstance(Network.j ava:95)
mathclient.MathClientView.jLabel1Ancesto rAdded(MathClientView.java:736)
mathclient.MathClientView.access$1200(Ma thClientView.java:39)
mathclient.MathClientView$10.ancestorAdd ed(MathClientView.java:299)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.11.2014, 11:38
Ответы с готовыми решениями:

Динамическое создание экземпляра
Здравствуйте,форумчане) Есть один класс(назовём его с1),у него есть циклический метод (m.c1).В нём вызывается метод ещё одного...

Создание нового экземпляра дочернего класса из экземпляра базового
Всем привет! Извиняюсь, если вопрос глупый, но что-то не смог найти конкретный ответ на него... У меня есть несколько классов: все они...

Поток сокета зависает при чтении больших страниц
Создаю сокет. у него есть свой поток. Считываю данные например ReadByte и все. поток намертво зависает и уже никогда не проснется. Таймаут...

1
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
06.11.2014, 16:13
waip, Socket при создании подключается к серверу по указанному порту.
Если создание Socket-а зависает, значит на порту 39190 хоста 127.0.0.1 никакой процесс не открыл порт и не ждет входящих подключений.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.11.2014, 16:13
Помогаю со студенческими работами здесь

Создание экземпляра класса, разрушение экземпляра класса
Не могу найти информацию про разрущение экземпляра класса. Объясните пожалуйста, что это?

Создание экземпляра БД (создание собственно базы данных)
Добрый день. Подскажите пожалуйста, я пытаюсь установить Oracle Database 11g Release 2. Следую этой инструкцией...

Создание сокета
Не совсем понял, можно ли сделать соединение socket, если сеть удаленная. То есть сервер находится в другом городе например. Напишите...

Создание сокета
Кто-нибудь помогите! Нужен рабочий код сервера и клиента с UDP соединением (сокет). Буду премного благодарен!

Создание сокета
Всем доброго времени суток. Знаю, таких тем тут уже 100500, но всеже прошу о помощи: помогите пожалуйста написать простейшую программу,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru