Форум программистов, компьютерный форум CyberForum.ru

Подскажите структуру сервера для программы чата - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Opengl es: свет в сцене http://www.cyberforum.ru/android-dev/thread1371661.html
Всем привет!! у меня на сцене есть источник света, но он светит не на всю сцену, а как сделать так чтобы, вся сцена была освещена ( вот допустим слабым светом, но чтобы на всю сцену вот тут такое освещение называется Окружающее(фоновое) освещение Но я не понимаю как его сделать.....нужно чтоли шейдер какой то написать с константными значениями для света ? или как ? подскажите пожалуйста!!! Всем...
Программирование Android Создать программу для того чтоб решать тесты Здравствуйте, я новичек в программировании. Хочу создать про грамму под Android, чтоб решать тесты, а сами вопросы и ответы подгружать из файла. Как это можно реальзовать. Пишу в Eclipse. Заранее спасибо. http://www.cyberforum.ru/android-dev/thread1371631.html
PopUp-ы, которые тянутся по высоте сами Программирование Android
Есть пример How to create popups in Android использую, нравится. Но как можно сделать PopUp ы которые сами масштабируются хотя бы по высоте. В существующем коде Ширина и Высота задаются принудительно: int popupWidth = 200; int popupHeight = 150;
Как полностью убрать Action Bar? Программирование Android
Добрый вечер ! Подскажите пожалуйста как полностью убрать Action Bar . Никак не получается , пробовал в манифесте менять ,вставлял вот это android:theme="@style/Theme.Sherlock.NoActionBar" , но никак не получается .
Программирование Android Рингтон на звонок http://www.cyberforum.ru/android-dev/thread1371603.html
Всем вечер добрый , такая проблемка ,не могу установить рингтон на звонок ,почему не ставится public boolean onContextItemSelected(MenuItem item) { AdapterView.AdapterContextMenuInfo info= (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); int pos = info.position; String sound = {"res/raw/sound1.mp3","res/raw/sound2.mp3","com/ru/mp/res/raw/sound3.mp3" ...
Программирование Android Конвертер температур (Цельсий - Фаренгейт) Здравствуйте, для курсовой нужно разработать приложение, я только учусь этому. Вот, что у меня получается: Код: import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.text.TextUtils; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; подробнее

Показать сообщение отдельно
Levikov
0 / 0 / 0
Регистрация: 19.01.2015
Сообщений: 8

Подскажите структуру сервера для программы чата - Программирование Android

10.02.2015, 09:25. Просмотров 377. Ответов 0
Метки (Все метки)

Я только начал писать программы под андроид и это первая программа.

Программа - чат типа IRC. Есть сервер который подключает каждого нового пользователя командой

threads[i] = new clientThread(clientSocket, threads)).start();

clientThread
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/*
 * 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 aboullaite;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
 
 
/**
 *
 * @author mohammed
 */
 
 
// For every client's connection we call this class
public class clientThread extends Thread{
     private String name = null;
  private BufferedReader is = null;
  private PrintStream os = null;
  private Socket clientSocket = null;
  private final clientThread[] threads;
  private int maxClientsCount;
 
 
  public clientThread(Socket clientSocket, clientThread[] threads) {
    this.clientSocket = clientSocket;
    this.threads = threads;
    maxClientsCount = threads.length;
 
  }
 
  public void run() {
    int maxClientsCount = this.maxClientsCount;
    clientThread[] threads = this.threads;
 
 
    try {
      /*
       * Create input and output streams for this client.
       */
      is = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
//      is = new DataInputStream(clientSocket.getInputStream());
      os = new PrintStream(clientSocket.getOutputStream());
 
      name=is.readLine().trim();
     /* while (true) {
        os.println("Enter your name.");
        name = is.readLine().trim();
        if (name.indexOf('@') == -1) {
          break;
        } else {
          os.println("The name should not contain '@' character.");
        }
      }
 
      /* Welcome the new the client.
      os.println("Welcome " + name
          + " to our chat room.\nTo leave enter /quit in a new line.");
      synchronized (this) {
        for (int i = 0; i < maxClientsCount; i++) {
          if (threads[i] != null && threads[i] == this) {
            clientName = "@" + name;
            break;
          }
        }
        for (int i = 0; i < maxClientsCount; i++) {
          if (threads[i] != null && threads[i] != this) {
            threads[i].os.println("*** A new user " + name
                + " entered the chat room !!! ***");
          }
        }
      }
      /* Start the conversation. */
      while (true) {
        String line = is.readLine();
        if (line.startsWith("/quit")) {
          break;
        }
        /* If the message is private sent it to the given client. */
        if (line.startsWith("@")) {
              synchronized (this) {
                for (int i = 0; i < maxClientsCount; i++) {
                  if (threads[i] != null && threads[i] != this)
                  {
                    threads[i].os.println(line);
                    /*
                     * Echo this message to let the client know the private
                     * message was sent.
                     */
                    this.os.println(line);
                    break;
                  }
                }
              }
        } else {
          /* The message is public, broadcast it to all other clients. */
          synchronized (this)
            {
            for (int i = 0; i < maxClientsCount; i++) {if (threads[i] != null) threads[i].os.println(line);}
            }
        }
      }
      synchronized (this) {
        for (int i = 0; i < maxClientsCount; i++) {
          if (threads[i] != null && threads[i] != this) {
            threads[i].os.println("*** The user " + name
                + " is leaving the chat room !!! ***");
          }
        }
      }
      os.println("*** Bye " + name + " ***");
 
      /*
       * Clean up. Set the current thread variable to null so that a new client
       * could be accepted by the server.
       */
      synchronized (this) {
        for (int i = 0; i < maxClientsCount; i++) {
          if (threads[i] == this) {
            threads[i] = null;
          }
        }
      }
      /*
       * Close the output stream, close the input stream, close the socket.
       */
      is.close();
      os.close();
      clientSocket.close();
    } catch (IOException e) {
    }
  }
}
Как только один пользователь пишет сообщение оно в for`e пробегает по всем threads[i] и передает сообщение всем подключенным. Подскажите как лучше организовать сервер, чтобы сообщения передавались только тем пользователям кто есть в канале. Сообщение уходит в виде JSONa

Mesage
Java
1
2
3
4
5
public class Message {
    private String StrDate;
    private String ChatChannel;
    private String fromName;
    private String message;}
Пока у меня мысль сделать в clientThread нечто типа String[] Channel, где передавать все каналы, которые открыты у пользователя. но получится ли это делать?


Сервер взят отсюда http://aboullaite.com/socket-programming-android-swing/
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru