powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Откуда запускать сокет-сервер?
15 сообщений из 15, страница 1 из 1
Откуда запускать сокет-сервер?
    #34892170
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ранее никогда не сталкивался с сокетами, но понадобилось ...

Теорию сокетов, создание сокет-сервера (слушателя), агента и прочее прошел, вроде ничего сложного в организации нет. Однако не могу привязать это к своей системе :(:
стоит Apache HTTP Server (80 порт), Tomcat (8080), проект построен на связке JSP-servlets, ну и БД.
Для того, чтобы мне запустить сокет-сервер, это надо делать ручками как отдельный проект (java-application или сервер)? Или можно просто запустить его при первом обращении к сервлету из init()?
Одним словом, плиз, поделитесь информацией - как происходит взаимодействие клиента (это будет окно браузера, в котором флеш и клиент - XMLSocket из стандартной библиотеки AS) и сервера (в моем случае связка JSP-servlet).

Спасибо.
...
Рейтинг: 0 / 0
Откуда запускать сокет-сервер?
    #34892278
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В твоем случае Init метод сервлета будет нормальным решением.
...
Рейтинг: 0 / 0
Откуда запускать сокет-сервер?
    #34892330
Фотография Изя Шниперсон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckРанее никогда не сталкивался с сокетами, но понадобилось ...

Теорию сокетов, создание сокет-сервера (слушателя), агента и прочее прошел, вроде ничего сложного в организации нет. Однако не могу привязать это к своей системе :(:
стоит Apache HTTP Server (80 порт), Tomcat (8080), проект построен на связке JSP-servlets, ну и БД.
Для того, чтобы мне запустить сокет-сервер, это надо делать ручками как отдельный проект (java-application или сервер)? Или можно просто запустить его при первом обращении к сервлету из init()?
Одним словом, плиз, поделитесь информацией - как происходит взаимодействие клиента (это будет окно браузера, в котором флеш и клиент - XMLSocket из стандартной библиотеки AS) и сервера (в моем случае связка JSP-servlet).

Спасибо.

Не совсем понятно о каком сокете идет речь?
Нужно чтоб было свое приложение на основе java.net.ServerSocket которое слушало бы какой-нибудь порт (отличный от 80 и 8080 раз на них уже Апачи и Томкат запущены)
...
Рейтинг: 0 / 0
Откуда запускать сокет-сервер?
    #34892676
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, все достаточно примитивно: игровой сайт, в окошке мультиигра, поэтому периодические запросы не подходят - нет эффекта риал-тайма. Игра на флеше, организация клиента-сокета реализовывается посредством класса XMLSocket (это особого значения не имеет, поскольку это всего лишь клиент).
А вот как реализовать на сервере сокет-сервер, я не очень понимаю. Класс, который слушает и создает экземпляр ServerSocket, создал и запустил. Но вот как он "услышит" клиента?
...
Рейтинг: 0 / 0
Откуда запускать сокет-сервер?
    #34892688
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckКласс, который слушает и создает экземпляр ServerSocket, создал и запустил. Но вот как он "услышит" клиента?
Клиент должен к нему постучаться.
...
Рейтинг: 0 / 0
Откуда запускать сокет-сервер?
    #34892726
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczВ твоем случае Init метод сервлета будет нормальным решением.
Ващет-то специально для таких вещей придуманы LifecycleEvent'ы. В Tomcat'е они есть, насколько я помню.
...
Рейтинг: 0 / 0
Откуда запускать сокет-сервер?
    #34892837
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно пару слов подробнее? - Я не слышал, чтобы знать куда копать ...

:) Это понятно, что должен постучать ... Но ... Сайт имеет адрес ххх.ххх.ххх.ххх (читай - ххх.ххх.ххх.ххх:80), на входе его отрабатывает Апач и на локалхост:8080 передает Томкету - контейнеру, который уже запускает необходимые сервлеты (классы). А вот если сокет-агент постучится к серверу с запросом ххх.ххх.ххх.ххх:4444 (к примеру), то кто его услышит? - Неужели созданный класс вешается на этот порт сервака и сам его "слушает" (Апач-то игнорирует любой порт, кроме 40 и https)? Если это так, то Ой! - чего-то я недопонял ...
...
Рейтинг: 0 / 0
Откуда запускать сокет-сервер?
    #34892922
IDVsbruckА можно пару слов подробнее? - Я не слышал, чтобы знать куда копать ...

:) Это понятно, что должен постучать ... Но ... Сайт имеет адрес ххх.ххх.ххх.ххх (читай - ххх.ххх.ххх.ххх:80), на входе его отрабатывает Апач и на локалхост:8080 передает Томкету - контейнеру, который уже запускает необходимые сервлеты (классы). А вот если сокет-агент постучится к серверу с запросом ххх.ххх.ххх.ххх:4444 (к примеру), то кто его услышит? - Неужели созданный класс вешается на этот порт сервака и сам его "слушает" (Апач-то игнорирует любой порт, кроме 40 и https)? Если это так, то Ой! - чего-то я недопонял ...
Его услышит ваш сокет-сервер :)
...
Рейтинг: 0 / 0
Откуда запускать сокет-сервер?
    #34892930
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Софтверный проктолог BlazkowiczВ твоем случае Init метод сервлета будет нормальным решением.
Ващет-то специально для таких вещей придуманы LifecycleEvent'ы. В Tomcat'е они есть, насколько я помню.
Ващет-то такая привязка к контейнеру нафиг не нужна.
...
Рейтинг: 0 / 0
Откуда запускать сокет-сервер?
    #34893493
Фотография Изя Шниперсон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckА можно пару слов подробнее? - Я не слышал, чтобы знать куда копать ...

:) Это понятно, что должен постучать ... Но ... Сайт имеет адрес ххх.ххх.ххх.ххх (читай - ххх.ххх.ххх.ххх:80), на входе его отрабатывает Апач и на локалхост:8080 передает Томкету - контейнеру, который уже запускает необходимые сервлеты (классы). А вот если сокет-агент постучится к серверу с запросом ххх.ххх.ххх.ххх:4444 (к примеру), то кто его услышит? - Неужели созданный класс вешается на этот порт сервака и сам его "слушает" (Апач-то игнорирует любой порт, кроме 40 и https)? Если это так, то Ой! - чего-то я недопонял ...


Если чезер собственный сокет делать, то можно помести в метод init() сервлета запуск нового потока в котором будет запускаться бесконечный цикл по ожиданию соединения ServerSocket на 4444 порту (если никто его не занял)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 public   void  run(){
      try 
		{
			ServerSocket serverSocket =  new  ServerSocket( 7654 );
			 while (true)
			{
				Socket incomingSocket = serverSocket.accept();
				..................
			}
		}
		 catch  (IOException e)
		{
			e.printStackTrace();
		}
  }

Второй вариант - задеплоить на том же Тоmcat но по другому адресу web приложение состоящее из
сервлета, который будет обмениваться сообщениями по протоколу, который нужно разработать, с клиент-сокетом Flash-приложения, а не писать html выходной поток.
ip адрес и порт будут таким же как и у Тоmcat но адрес сервлета на Тоmcat будет другой.
...
Рейтинг: 0 / 0
Откуда запускать сокет-сервер?
    #34893497
Фотография Изя Шниперсон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотел написать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 public   void  run(){
      try 
		{
			ServerSocket serverSocket =  new  ServerSocket( 4444 );
			 while (true)
			{
				Socket incomingSocket = serverSocket.accept();
				..................
			}
		}
		 catch  (IOException e)
		{
			e.printStackTrace();
		}
  }
...
Рейтинг: 0 / 0
Откуда запускать сокет-сервер?
    #34896180
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только прямо запускать сокет-сервер из сервлета нельзя - тут же виснет в бесконечном цикле, надо в параллельном процессе. А вот тут я что-то совершенно запутался с одновременной реализацией класса "public class Server extends Thread" - что-то он у меня параллельно не хочет запускаться.

Наберусь наглости попросить подсказать правильный толчок к запуску этого сокет-сервера в параллельном процессе. Спасибо.
...
Рейтинг: 0 / 0
Откуда запускать сокет-сервер?
    #34896570
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckТолько прямо запускать сокет-сервер из сервлета нельзя - тут же виснет в бесконечном цикле, надо в параллельном процессе. А вот тут я что-то совершенно запутался с одновременной реализацией класса "public class Server extends Thread" - что-то он у меня параллельно не хочет запускаться.

Наберусь наглости попросить подсказать правильный толчок к запуску этого сокет-сервера в параллельном процессе. Спасибо.
Вы решили проигнорировать мою реплику про Lifecycle Event'ы — дело ваше.
...
Рейтинг: 0 / 0
Откуда запускать сокет-сервер?
    #34896782
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Софтверный проктологВащет-то специально для таких вещей придуманы LifecycleEvent'ы. В Tomcat'е они есть, насколько я помню.

IDVsbruckА можно пару слов подробнее? - Я не слышал, чтобы знать куда копать ...

Вобще-то нет ... Я просто даже слов таких раньше не слышал :)
...
Рейтинг: 0 / 0
Откуда запускать сокет-сервер?
    #34897034
Фотография Изя Шниперсон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckТолько прямо запускать сокет-сервер из сервлета нельзя - тут же виснет в бесконечном цикле, надо в параллельном процессе. А вот тут я что-то совершенно запутался с одновременной реализацией класса "public class Server extends Thread" - что-то он у меня параллельно не хочет запускаться.

Наберусь наглости попросить подсказать правильный толчок к запуску этого сокет-сервера в параллельном процессе. Спасибо.

Лучше Runnable реализовать в новом классе:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
  public   class  MyServer   implements  Runnable{
  
  public   void  run(){
   try 
		{
			ServerSocket serverSocket =  new  ServerSocket( 4444 );
			 while (true)
			{
				Socket incomingSocket = serverSocket.accept();
				..................
			}
		}
		 catch  (IOException e)
		{
			e.printStackTrace();
		}
 }
}
 

А потом в init() запустить поток

Код: plaintext
1.
2.
3.
4.
5.
   public   void  init(){
   MyServer myServer =  new  MyServer();
   Thread thread =  new  Thread(myServer);
    thread.start();'
 }
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Откуда запускать сокет-сервер?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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