Форум программистов, компьютерный форум, киберфорум
Java: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
226 / 184 / 80
Регистрация: 13.04.2014
Сообщений: 694

Кто-нибудь объясните код

16.12.2014, 17:57. Показов 428. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Нашел код небольшого консольного чата. Решил посмотреть что да как и сделать для чата визуальное оформление. Серверную часть я понял, а вот клиентскую часть нет(.
Клиент
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
import java.io.*;
import java.net.*;
/**
 * @author Askar Satabaldiev
 */
 
public class ChatClient implements Runnable{
    static Socket clientSocket = null;
    static PrintStream os = null;
    static DataInputStream is = null;
    static BufferedReader inputLine = null;
    static boolean closed = false;
    
    public static void main(String[] args) {
    int port_number=2222;
            String host="localhost";
    
    if (args.length < 2)
        {    System.out.println("host="+host+", port_number="+port_number);
        } else {
        host=args[0];
        port_number=Integer.valueOf(args[1]).intValue();
        }
 
    try {
            clientSocket = new Socket(host, port_number);
            inputLine = new BufferedReader(new InputStreamReader(System.in));
            os = new PrintStream(clientSocket.getOutputStream());
            is = new DataInputStream(clientSocket.getInputStream());
        } catch (UnknownHostException e) {
            System.err.println("Don't know about host "+host);
        } catch (IOException e) {
            System.err.println("Couldn't get I/O for the connection to the host "+host);
        }
    
    
        if (clientSocket != null && os != null && is != null) {
            try {       
                new Thread(new ChatClient()).start();
        
        while (!closed) {
                    os.println(inputLine.readLine()); 
                }
        
        
        os.close();
        is.close();
        clientSocket.close();   
            } catch (IOException e) {
                System.err.println("IOException:  " + e);
            }
        }
    }           
    
    public void run() {     
    String responseLine;
    try{ 
        while ((responseLine = is.readLine()) != null) {
        System.out.println(responseLine);
        if (responseLine.indexOf("*** Bye") != -1) break;
        }
            closed=true;
    } catch (IOException e) {
        System.err.println("IOException:  " + e);
    }
    }
}


Сервер
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
import java.io.*;
import java.net.*;
/**
 * @author Askar Satabaldiev
 */
 
public class ChatServer{
    static  Socket clientSocket = null;
    static  ServerSocket serverSocket = null;
 
    static  clientThread t[] = new clientThread[10];           
    
    public static void main(String args[]) {    
    int port_number=2222;
    
    if (args.length < 1)
        {
        System.out.println("ChatServer \n"+
                   "port number="+port_number);
        } else {
        port_number=Integer.valueOf(args[0]).intValue();
        }
    
 
        try {
        serverSocket = new ServerSocket(port_number);
        }
        catch (IOException e)
        {System.out.println(e);}
    
    while(true){
        try {
        clientSocket = serverSocket.accept();
        for(int i=0; i<=9; i++){
            if(t[i]==null){
                (t[i] = new clientThread(clientSocket,t)).start();
                break;
            }
        }
        }
        catch (IOException e) {
        System.out.println(e);}
    }
    }
} 
 
class clientThread extends Thread{ 
    DataInputStream is = null;
    PrintStream os = null;
    Socket clientSocket = null;       
    clientThread t[]; 
    
    public clientThread(Socket clientSocket, clientThread[] t){
    this.clientSocket=clientSocket;
            this.t=t;
    }
    
    public void run() 
    {
    String line;
            String name;
    try{
        is = new DataInputStream(clientSocket.getInputStream());
        os = new PrintStream(clientSocket.getOutputStream());
        os.println("Enter your name.");
        name = is.readLine();
        os.println("Welcome "+name+" to our chat room.\nEnter /quit to leave room"); 
        for(int i=0; i<=9; i++)
        if (t[i]!=null && t[i]!=this)  
            t[i].os.println("*** A new user "+name+" entered the chat room !!! ***" );
        while (true) {
        line = is.readLine();
                        if(line.startsWith("/quit")) break; 
        for(int i=0; i<=9; i++)
            if (t[i]!=null)  t[i].os.println("<"+name+"> "+line); 
        }
        for(int i=0; i<=9; i++)
        if (t[i]!=null && t[i]!=this)  
            t[i].os.println("*** The user "+name+" is leaving the chat room !!! ***" );
        
        os.println("*** Bye "+name+" ***"); 
 
        for(int i=0; i<=9; i++)
        if (t[i]==this) t[i]=null;  
        
        is.close();
        os.close();
        clientSocket.close();
    }
    catch(IOException e){};
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.12.2014, 17:57
Ответы с готовыми решениями:

C JRun кто-нибудь работает?
Есть приложение, запущенное под JRun 3.0, и все бы хорошо, да вот адрес у него стоит как http://pc123/plugin/template/... где 'pc123'...

NewsML кто-нибудь пользовал?
...ищу что почитать умного на эту тему

Кто-нибудь работает с Х-формами?..
Добрый день всем любителям кофе. Г-да, откликнитесь, работает ли кто-то с Х-формами? Выполняем пилотный проект, есть много вопросов. ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.12.2014, 17:57
Помогаю со студенческими работами здесь

кто-нибудь работал с IBM WebSphere?
как этого монстра конфигурировать? а может быть кто-то знает ссылку на грамотный 'туториал'?

Кто нибудь работал с JDO??? Нужен совет...
Если кто то знает книжки по JDO (Java Data Object) в электронном виде, или есть какие нибудь исходники, или кто нибудь знает как работать с...

Oracle JDeveloper - кто-нибудь работает с ним?
Привет всем! Вот поставил у себя JDeveloper 3.2.3 и Oracle9i DataBase. Оказалось, JDeveloper настроен на поддержку Oracle8.1.7. Я...

Кто-нибудь писал IIOP клиента под JBoss?
Кто-нибудь писал IIOP клиента под JBoss? Что-то у меня не получается... (скажу сразу, опыт написания IIOP для SunONE есть) ...

java.lang.VerifyError и Log4j кто нибудь знает что это такое ?
Следуюший метод кода генерирует ошибку, природы котороя я даже теоретически не могу представить. Может кто то такое раньше видел ? ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru