powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / сеть
25 сообщений из 42, страница 1 из 2
сеть
    #33025607
mastanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть сервер, есть клиент. Сервер многопоточный, т.е. для каждого соединения создается новый поток. например, клиент и сервер обмениваются сообщениями. все здорово. Вопрос, как сделать, чтобы и клиенты могли друг с другом общаться? Можно просто саму идею подкинуть.

И еще одно. текст кода main сервера:

...
public static void main(String args[]){
ServerSocket ss = new ServerSocket(2300);
for(;;){
Socket client = ss.accept();
ClientThread thread = new ClientThread(client);
thread.start();
}
}
...

Как-то оно так. Так вот, говорят, что за время создания нового экземпляра потока, могут проигнорироваться новые соединения. Это так? Как этого избежать?

Ребята, подскажите пожалуйста.
...
Рейтинг: 0 / 0
сеть
    #33025622
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mastanikТак вот, говорят, что за время создания нового экземпляра потока, могут проигнорироваться новые соединения
Кто говорит? по-моему это неправда.
mastanikМожно просто саму идею подкинуть
как вариант JMS
...
Рейтинг: 0 / 0
сеть
    #33025628
Фотография adf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я такую фигню на диплом пишу.
Создается список клиентов.
Надо там синхронизовать по-моему этот список.
так :

public void runServer(){
try{
while (true){
Socket us = servSock.accept();
//получить IP адрес машины, а не имя
InetAddress hostIP = us.getInetAddress();

ChatHandler cl = new ChatHandler(us, hostIP);

synchronized(clients){
//сначала стартовать и проверить
//потом добавить в список и разослать всем
clients.add(cl);
cl.start();

}
}
}catch(IOException e){
log("Ошибка при работе сервера: "+ e+"\n");
System.exit(0);
}
}

Где


///////////////////////////////////////////////////////////
/////////// ВНУТРЕННИЙ КЛАСС юзера чата //////////
/////////////////////////////////////////////////////////
protected class ChatHandler extends Thread {

protected Socket clientSock;
protected BufferedReader is;
protected ObjectOutputStream pw;
protected InetAddress ip;//уникальный ip адрес машины

//это достается из дерева
protected int num;//идентификатор
protected String name;//фио


public ChatHandler(Socket sock, InetAddress clnt) throws IOException {

clientSock=sock;
ip=clnt;
is=new BufferedReader(new InputStreamReader(sock.getInputStream()));
pw=new ObjectOutputStream(sock.getOutputStream());

////////////////////////////////////////////////////////////////
/////////// RUN для нитей ////////////////////////
public void run(){
String line;
try {
//получаем сообщение
while ((line=is.readLine())!=null){
//здесь рассылается всем,
//но у меня тут слегка наворочено,
char c = line.charAt(0);//вид сообщения
}
}
}catch(IOException e){
log("Ошибка в нитях "+ e +"\n" );
}finally{//делается в любом случае
log(name + " Отключился\n");
close();
synchronized(clients){
clients.remove(this);
if (clients.size()==0){
log("Никого нет\n");
}
}
}
}

Очень просто отправлять сообщения всем клиентам сразу. Сервер получает их потока сообщение от кого-либо, потом посылает в поток всем
...
Рейтинг: 0 / 0
сеть
    #33025639
mastanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
окей, а если не прибегать к применению корпоративных технологий? если нужно общаться только 10 людям? и приложению не требуется быть масштабируемым?
...
Рейтинг: 0 / 0
сеть
    #33025651
А.Грасоff™ JE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а можно код оформлять тэгами [ SRC java]...[/ SRC]?

--
а?

типа так:

Код: plaintext
1.
2.
3.
 for  ( int  i =  0 ; i <  5 ; i++) {
  System.out.println("Зае#$:ло");
}
...
Рейтинг: 0 / 0
сеть
    #33025652
mastanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 adf:
спасибо за пример, но тут как я понял рассылка сразу всем клиентам?
...
Рейтинг: 0 / 0
сеть
    #33025657
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mastanikокей, а если не прибегать к применению корпоративных технологий? если нужно общаться только 10 людям? и приложению не требуется быть масштабируемым?
Че так? :)
А если эти 10 челов потом в Сан или Мыкрософт превратятся?
...
Рейтинг: 0 / 0
сеть
    #33025670
Фотография adf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mastanik2 adf:
спасибо за пример, но тут как я понял рассылка сразу всем клиентам?
Ну этот пример-да. Я тут комнатки сейчас делаю

к звездочкам прибавляются и отсутствие [src]? Сорри, учту
...
Рейтинг: 0 / 0
сеть
    #33025672
А.Грасоff™ JE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
правила форума:

http://www.sql.ru/forum/rules.aspx
...
Рекомендуется:
...
Для повышения удобочитаемости сообщений - пользоваться ... тегом форматирования исходных кодов src.
...
...
Рейтинг: 0 / 0
сеть
    #33025674
mastanik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и какого вырезают мои сообщения???

Народ, по второму вопросу кто-нить прокомментирует?
...
Рейтинг: 0 / 0
сеть
    #33025692
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2mastanik
Я когда с сокетами ознакомился, написал гуёвый чат на swing, там все как adf расписло, если надо, могу дать.
...
Рейтинг: 0 / 0
сеть
    #33025707
AL_KIR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы пишете:
mastanikЕсть сервер, есть клиент. Сервер многопоточный, т.е. для каждого соединения создается новый поток. например, клиент и сервер обмениваются сообщениями. все здорово. Вопрос, как сделать, чтобы и клиенты могли друг с другом общаться? Можно просто саму идею подкинуть.


Представляется что в вашем случае клиент и сервер - это отдельные приложения. Все клиенты общаются только с сервером. В таком случае можно пойти по технологии чатов в интернете :). Еще аналог Почтовый клиент и Почтовый Сервер.

Другая технология состоит в том что приложение которое вы напишите будет являться и клиентом и сервером одновременно (т.е будет прослушивать некий порт и общаться с таким же приложением). Я видел несколько таких чатов для локальной сети. Запускается приложение, далее выбираете компьюторы с которыми вы хотите общаться и общаетесь, при условии если на этих комьюторах тоже будет запущена такая программа. Минус конечно очевиден - вы общаетесь с компьютером (ip в сетях tcp/ip), а не с человеком, который может работать за разными компьютерами.
...
Рейтинг: 0 / 0
сеть
    #33025718
Фотография adf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wessen2mastanik
Я когда с сокетами ознакомился, написал гуёвый чат на swing
У тебя рассылка всем была?
...
Рейтинг: 0 / 0
сеть
    #33025738
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adf wessen2mastanik
Я когда с сокетами ознакомился, написал гуёвый чат на swing
У тебя рассылка всем была?
да.
Ну там стондартно, сервер и много клиентов.
...
Рейтинг: 0 / 0
сеть
    #33025754
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wessen adf wessen2mastanik
Я когда с сокетами ознакомился, написал гуёвый чат на swing
У тебя рассылка всем была?
да.
Ну там стондартно, сервер и много клиентов.

А хотя нет, парю я, не так вопрос понял, там у каждого клиента есть список всех остальных, выбираешь мышкой нужного и говоришь с ним.
...
Рейтинг: 0 / 0
сеть
    #33025758
А.Грасоff™ JE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wessen wessen adf wessen2mastanik
Я когда с сокетами ознакомился, написал гуёвый чат на swing
У тебя рассылка всем была?
да.
Ну там стондартно, сервер и много клиентов.

А хотя нет, парю я, не так вопрос понял, там у каждого клиента есть список всех остальных, выбираешь мышкой нужного и говоришь с ним.
дак вот кто мирабилис основал!
...
Рейтинг: 0 / 0
сеть
    #33025774
Фотография adf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wessen wessen adf wessen2mastanik
Я когда с сокетами ознакомился, написал гуёвый чат на swing
У тебя рассылка всем была?
да.
Ну там стондартно, сервер и много клиентов.

А хотя нет, парю я, не так вопрос понял, там у каждого клиента есть список всех остальных, выбираешь мышкой нужного и говоришь с ним.

..
Просто у меня задача рассылки по комнатам, приходится че-то придумывать, а это 100% неоптимально. Я вот думала, может кто-то с этим сталкивался...
У меня дерево отделов
...
Рейтинг: 0 / 0
сеть
    #33025781
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В чем проблема?
добавить для клиента новый тип команд, которые будут пересылаться всем (определенным) подключенным клиентам. На сервере храните список открытых сокетов (если этого еще нет) и расталкиваете по ним сообщения.
...
Рейтинг: 0 / 0
сеть
    #33025800
Фотография adf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pitbull terrierВ чем проблема?
добавить для клиента новый тип команд, которые будут пересылаться всем (определенным) подключенным клиентам. На сервере храните список открытых сокетов (если этого еще нет) и расталкиваете по ним сообщения.
Я думала сделать список комнат, в которых будут хранится списки группы пользователей. На сервер приходит номер комнаты и сообщение которое надо разослать по комнате.
Тут проблема с иерархией сотрудников. Кто кому имеет право отсылать сообщения (как сказал шеф:"Дворник дядя ваня не имеет право посылать запрос на открытие комнаты с директором тетей Зоей. А вот тетя Зоя имеет право"). Причем дерево может быть несбалансированным и уровней нефиксированное количество
...
Рейтинг: 0 / 0
сеть
    #33025801
jms все проблемы решит
...
Рейтинг: 0 / 0
сеть
    #33025815
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
херась тут думатьjms все проблемы решит
чтобы был jms нужен сервер приложение, а это уже совсем другая история....
...
Рейтинг: 0 / 0
сеть
    #33025820
Фотография adf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
херась тут думатьjms все проблемы решит

Да?
Этож диплом!
И его надо еще дописать за 7 дней
...
Рейтинг: 0 / 0
сеть
    #33025827
А.Грасоff™ JE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adfЭтож диплом!
И его надо еще дописать за 7 дней:) ты справишься :)
...
Рейтинг: 0 / 0
сеть
    #33025848
Фотография adf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А.Грасоff™ JE adfЭтож диплом!
И его надо еще дописать за 7 дней:) ты справишься :)
:)Ладно бы этот долбанный чат, там еще и базка данных недописанная...

Я чувствую каким-то местом, что я лишусь стабильного 8-часового крепкого сна и прочих радостей жизни.
...
Рейтинг: 0 / 0
сеть
    #33025855
неа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wessen херась тут думатьjms все проблемы решит
чтобы был jms нужен сервер приложение, а это уже совсем другая история....
ни нужен
...
Рейтинг: 0 / 0
25 сообщений из 42, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / сеть
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]