|
|
|
сеть
|
|||
|---|---|---|---|
|
#18+
Есть сервер, есть клиент. Сервер многопоточный, т.е. для каждого соединения создается новый поток. например, клиент и сервер обмениваются сообщениями. все здорово. Вопрос, как сделать, чтобы и клиенты могли друг с другом общаться? Можно просто саму идею подкинуть. И еще одно. текст кода main сервера: ... public static void main(String args[]){ ServerSocket ss = new ServerSocket(2300); for(;;){ Socket client = ss.accept(); ClientThread thread = new ClientThread(client); thread.start(); } } ... Как-то оно так. Так вот, говорят, что за время создания нового экземпляра потока, могут проигнорироваться новые соединения. Это так? Как этого избежать? Ребята, подскажите пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 15:46 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
mastanikТак вот, говорят, что за время создания нового экземпляра потока, могут проигнорироваться новые соединения Кто говорит? по-моему это неправда. mastanikМожно просто саму идею подкинуть как вариант JMS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 15:53 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
Я такую фигню на диплом пишу. Создается список клиентов. Надо там синхронизовать по-моему этот список. так : 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"); } } } } Очень просто отправлять сообщения всем клиентам сразу. Сервер получает их потока сообщение от кого-либо, потом посылает в поток всем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 15:55 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
окей, а если не прибегать к применению корпоративных технологий? если нужно общаться только 10 людям? и приложению не требуется быть масштабируемым? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:00 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
а можно код оформлять тэгами [ SRC java]...[/ SRC]? -- а? типа так: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:04 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
2 adf: спасибо за пример, но тут как я понял рассылка сразу всем клиентам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:04 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
mastanikокей, а если не прибегать к применению корпоративных технологий? если нужно общаться только 10 людям? и приложению не требуется быть масштабируемым? Че так? :) А если эти 10 челов потом в Сан или Мыкрософт превратятся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:05 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
mastanik2 adf: спасибо за пример, но тут как я понял рассылка сразу всем клиентам? Ну этот пример-да. Я тут комнатки сейчас делаю к звездочкам прибавляются и отсутствие [src]? Сорри, учту ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:10 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
правила форума: http://www.sql.ru/forum/rules.aspx ... Рекомендуется: ... Для повышения удобочитаемости сообщений - пользоваться ... тегом форматирования исходных кодов src. ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:10 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
и какого вырезают мои сообщения??? Народ, по второму вопросу кто-нить прокомментирует? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:11 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
2mastanik Я когда с сокетами ознакомился, написал гуёвый чат на swing, там все как adf расписло, если надо, могу дать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:14 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
Вы пишете: mastanikЕсть сервер, есть клиент. Сервер многопоточный, т.е. для каждого соединения создается новый поток. например, клиент и сервер обмениваются сообщениями. все здорово. Вопрос, как сделать, чтобы и клиенты могли друг с другом общаться? Можно просто саму идею подкинуть. Представляется что в вашем случае клиент и сервер - это отдельные приложения. Все клиенты общаются только с сервером. В таком случае можно пойти по технологии чатов в интернете :). Еще аналог Почтовый клиент и Почтовый Сервер. Другая технология состоит в том что приложение которое вы напишите будет являться и клиентом и сервером одновременно (т.е будет прослушивать некий порт и общаться с таким же приложением). Я видел несколько таких чатов для локальной сети. Запускается приложение, далее выбираете компьюторы с которыми вы хотите общаться и общаетесь, при условии если на этих комьюторах тоже будет запущена такая программа. Минус конечно очевиден - вы общаетесь с компьютером (ip в сетях tcp/ip), а не с человеком, который может работать за разными компьютерами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:20 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
wessen2mastanik Я когда с сокетами ознакомился, написал гуёвый чат на swing У тебя рассылка всем была? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:24 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
adf wessen2mastanik Я когда с сокетами ознакомился, написал гуёвый чат на swing У тебя рассылка всем была? да. Ну там стондартно, сервер и много клиентов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:31 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
wessen adf wessen2mastanik Я когда с сокетами ознакомился, написал гуёвый чат на swing У тебя рассылка всем была? да. Ну там стондартно, сервер и много клиентов. А хотя нет, парю я, не так вопрос понял, там у каждого клиента есть список всех остальных, выбираешь мышкой нужного и говоришь с ним. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:35 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
wessen wessen adf wessen2mastanik Я когда с сокетами ознакомился, написал гуёвый чат на swing У тебя рассылка всем была? да. Ну там стондартно, сервер и много клиентов. А хотя нет, парю я, не так вопрос понял, там у каждого клиента есть список всех остальных, выбираешь мышкой нужного и говоришь с ним. дак вот кто мирабилис основал! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:36 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
wessen wessen adf wessen2mastanik Я когда с сокетами ознакомился, написал гуёвый чат на swing У тебя рассылка всем была? да. Ну там стондартно, сервер и много клиентов. А хотя нет, парю я, не так вопрос понял, там у каждого клиента есть список всех остальных, выбираешь мышкой нужного и говоришь с ним. .. Просто у меня задача рассылки по комнатам, приходится че-то придумывать, а это 100% неоптимально. Я вот думала, может кто-то с этим сталкивался... У меня дерево отделов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:43 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
В чем проблема? добавить для клиента новый тип команд, которые будут пересылаться всем (определенным) подключенным клиентам. На сервере храните список открытых сокетов (если этого еще нет) и расталкиваете по ним сообщения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:45 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
Pitbull terrierВ чем проблема? добавить для клиента новый тип команд, которые будут пересылаться всем (определенным) подключенным клиентам. На сервере храните список открытых сокетов (если этого еще нет) и расталкиваете по ним сообщения. Я думала сделать список комнат, в которых будут хранится списки группы пользователей. На сервер приходит номер комнаты и сообщение которое надо разослать по комнате. Тут проблема с иерархией сотрудников. Кто кому имеет право отсылать сообщения (как сказал шеф:"Дворник дядя ваня не имеет право посылать запрос на открытие комнаты с директором тетей Зоей. А вот тетя Зоя имеет право"). Причем дерево может быть несбалансированным и уровней нефиксированное количество ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:51 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
херась тут думатьjms все проблемы решит чтобы был jms нужен сервер приложение, а это уже совсем другая история.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:54 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
херась тут думатьjms все проблемы решит Да? Этож диплом! И его надо еще дописать за 7 дней ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:55 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
adfЭтож диплом! И его надо еще дописать за 7 дней:) ты справишься :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:58 |
|
||
|
сеть
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™ JE adfЭтож диплом! И его надо еще дописать за 7 дней:) ты справишься :) :)Ладно бы этот долбанный чат, там еще и базка данных недописанная... Я чувствую каким-то местом, что я лишусь стабильного 8-часового крепкого сна и прочих радостей жизни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 17:02 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=808&tid=2152511]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
33ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 343ms |

| 0 / 0 |
