Форум программистов, компьютерный форум, киберфорум
Java: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
43 / 43 / 15
Регистрация: 10.09.2013
Сообщений: 293

Странная работа селектора

21.11.2013, 21:25. Показов 838. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Объясните мне почему выполняется эта часть кода? Она не должна выполняться так как клиент ничего не отправляет! Что за магия?)) Глюки начинаются когда клиент отключается от сервера. Было бы хорошо увидеть простой, очень простой пример, сервера который просто принимал и выводил сообщение от клиента, ну и соответственно простенький клиент к этому серверу. Буду очень благодарен всем кто откликнется!
Java
1
2
3
if (key.isReadable()) {
                        System.out.println("Read");
                    }
Server
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package serverselector;
 
import java.io.*;
import java.nio.*;
import java.net.*;
import java.nio.channels.*;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
 
/**
 *
 * @author insane
 */
public class Server implements Runnable {
 
    public static final int MAX_BUFFER_SIZE = 1024;
 
    private ServerSocketChannel serverSocketChannel;
    private Selector selector;
    private ServerSocket serverSocket;
    private InetSocketAddress inetSocketAddress;
    private Thread thread;
    private int port;
    private ByteBuffer byteBuffer;
 
    public Server(int port) {
        this.port = port;
        byteBuffer = ByteBuffer.allocate(MAX_BUFFER_SIZE);
    }
 
    @Override
    public void run() {
        try {
            serverSocketChannel = ServerSocketChannel.open();
            inetSocketAddress = new InetSocketAddress(port);
            serverSocketChannel.configureBlocking(false);
            serverSocket = serverSocketChannel.socket();
            serverSocket.bind(inetSocketAddress);
            selector = Selector.open();
            serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);
        } catch (IOException ex) {
            System.out.println("Excep 1");
        }
        System.out.println("Server is start..");
        while (true) {
            try {
                
                int count = selector.select();
                
                
                if (count <= 0) {
                    continue;
                }
 
                Set<SelectionKey> keys = selector.selectedKeys();
                Iterator<SelectionKey> iterator = keys.iterator();
                
                while (iterator.hasNext()) {
                    
                    SelectionKey key = iterator.next();
                    iterator.remove();
                    Socket socket = null;
                    SocketChannel channel = null;
                    
                    if (key.isAcceptable()) {
                        try {
                            channel = serverSocketChannel.accept();
                            
                            channel.configureBlocking(false);
                            channel.register(selector, SelectionKey.OP_READ);
                            System.out.println("Connect ");
                            
                        }catch(IOException e){
                            System.out.println("awd");
                        }
                        continue;
                    }
                    if (key.isReadable()) {
                        System.out.println("Read");
                    }
                    
                }
                System.out.println("Next..");
            } catch (IOException ex) {
                Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
            }
 
        }
 
    }
 
    public void runServer() {
        thread = new Thread(this);
        thread.start();
    }
 
   public static void main(String[] args) throws InterruptedException {
        Server server = new Server(1234);
        server.runServer();
        
    }
}
Client
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
import javax.swing.*;
 
/**
 *
 * @author insane
 */
import java.awt.*;
import java.awt.event.*;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.SocketChannel;
 
public class Main {
 
    public static void main(String args[]) throws IOException, InterruptedException {
        int i = 0;
        Selector selector = Selector.open();
        SocketChannel channel = SocketChannel.open();
        channel.configureBlocking(false);
        channel.register(selector, SelectionKey.OP_CONNECT);
        channel.connect(new InetSocketAddress("127.0.0.1", 1234));
        
    }
}
Вот что получается:
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.11.2013, 21:25
Ответы с готовыми решениями:

Странная работа switch case
Кто объяснит, почему компилятор не считает это за ошибку? Переменная heightAndNswe не объявляется при выборе &quot;b&quot;, однако ей...

Странная работа Wi-Fi
Вчера начал пропадать интернет т.е. есть, рраз на пол минуты - минуту отключается и снова есть, пропадет по разному бывает каждые 5 минут,...

Странная работа ПК
Всем привет. Вчера все было нормально, сегодня начал заходить в игру - начал замечать что при заходе в нее начинает что-то свистеть в...

1
43 / 43 / 15
Регистрация: 10.09.2013
Сообщений: 293
21.11.2013, 21:27  [ТС]
И еще было бы не плохо узнать когда на сервере обрабатывать отключения клиента?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.11.2013, 21:27
Помогаю со студенческими работами здесь

Странная работа uniq
Кто нибудь может объяснить мне вот это? # cat 951701 | grep 79379900704 79379900704 79379900704 # cat 951701 | wc -l ...

Странная работа роутера
Включаю комп, интернет подтягивается автоматически, сижу, работаю. Потом бац - интернета нет. Было так несколько раз. Появляется сам. Само...

Странная работа TTimer
Здраствуйте) Есть два таймера: у первого интервал 1 (т.е. 1/1000) секунды, у второго интервал 1000. когда срабатывает...

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

Странная работа JQuery
Здравствуйте! Столкнулся со странностью работы jQuery Есть блок &lt;li&gt; &lt;a class=&quot;js-filter-param filter-param change-word&quot;...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru