Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / сеть / 25 сообщений из 42, страница 1 из 2
20.04.2005, 15:46
    #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
20.04.2005, 15:53
    #33025622
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сеть
mastanikТак вот, говорят, что за время создания нового экземпляра потока, могут проигнорироваться новые соединения
Кто говорит? по-моему это неправда.
mastanikМожно просто саму идею подкинуть
как вариант JMS
...
Рейтинг: 0 / 0
20.04.2005, 15:55
    #33025628
adf
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
20.04.2005, 16:00
    #33025639
mastanik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сеть
окей, а если не прибегать к применению корпоративных технологий? если нужно общаться только 10 людям? и приложению не требуется быть масштабируемым?
...
Рейтинг: 0 / 0
20.04.2005, 16:04
    #33025651
А.Грасоff™ JE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сеть
а можно код оформлять тэгами [ SRC java]...[/ SRC]?

--
а?

типа так:

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

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

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

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


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

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

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

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

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

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

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

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


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