Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Mожет cервер быть инициатором обмена данных?

Сообщения:  [1-10]    [11-20]  [21-30] 

 
 автор: aexb   (08.06.2009 в 12:24)   письмо автору
 
   для: K   (06.06.2009 в 12:39)
 

*Воровато оглядываясь по сторонам*
Посмотрите в сторону .net, там можно писать службы, которые как раз выступают инициаторами. И если вам нужен проект с широкой и сложной бизнес-логикой, то .net - самое оно.

  Ответить  
 
 автор: K   (07.06.2009 в 12:49)   письмо автору
 
   для: K   (06.06.2009 в 12:39)
 

Итого

На сервере в функции обработки запросов клиентов вызывались функции

public static InetSocketAddress ip;
public static boolean firstClient=true;

public static void testClient(HttpExchange exchange){

if(firstClient){
firstClient=false;
ip=exchange.getRemoteAddress();
System.out.println("testClient ip="+ip);
new Thread(){
public void run(){
try{
sleep(30*1000); // 30 sec
URL url=new URL("http:/"+ip.toString());
URLConnection urlConnect=url.openConnection();
urlConnect.setDoOutput(true);
OutputStream out=urlConnect.getOutputStream();
// --> java.net.ConnectException: Connection refused: connect
out.write("Hellow".getBytes());
urlConnect.setDoInput(true);
InputStream in=urlConnect.getInputStream();
byte buf[] = new byte[64*1024];
int len=0,n;
while((n=in.read(buf,len,buf.length-len))!=-1)
len+=n;
String text = new String(buf, 0, len);
}catch(Exception e){ System.out.println("testClient Exception="+e); }
}
}.start();
}
}
//-----------------------------------------------------------------------------------------
или
//-----------------------------------------------------------------------------------------
public static void testClient(HttpExchange exchange){

if(firstClient){
firstClient=false;
ip=exchange.getRemoteAddress();
System.out.println("testClient ip="+ip);
new Thread(){
public void run(){
try{
sleep(30*1000); // 30 sec
Socket s=new Socket(ip.getHostName(),ip.getPort());
// --> java.net.ConnectException: Connection refused: connect
OutputStream out=s.getOutputStream();
out.write("Hellow".getBytes());
InputStream in=s.getInputStream();
byte buf[] = new byte[64*1024];
int len=0,n;
while((n=in.read(buf,len,buf.length-len))!=-1)
len+=n;
String text = new String(buf, 0, len);
}catch(Exception e){ System.out.println("testClient Exception="+e); }
}
}.start();
}
}
//-----------------------------------------------------------------------------------------

В обоих случаях было отказано в соединении

java.net.ConnectException: Connection refused: connect

  Ответить  
 
 автор: K   (07.06.2009 в 12:43)   письмо автору
 
   для: K   (06.06.2009 в 12:39)
 

test

  Ответить  
 
 автор: sim5   (07.06.2009 в 07:56)   письмо автору
 
   для: K   (07.06.2009 в 01:11)
 

Вот вы сами же пишите человеческое, а значит понимаете суть процесса, и в то же время несете невообразимое. Сервер не браузеру посылает пакеты свои, эти пакеты в фоновом режиме принимаются модемом и аккуратно помещаются в буфер, и любое заинтересованное приложение может их получить. Но для этого оно само должно следить за буфером, реагировать на его заполение и считывать. Сам же буфер не заставит браузер обратиться к нему.

  Ответить  
 
 автор: Valick   (07.06.2009 в 01:36)   письмо автору
 
   для: K   (07.06.2009 в 01:11)
 

А вот ещё идея...
по образу и подобию автозапуска дисков (например CHIP-DVD) когда вставляете диск в привод запускается браузер с нужной страницей.
локальным вебсервером Вы принимаете данные формируете страницу и скармливаете её системе (правда придётся разрешить это делать серверу)
можно даже с этой страницы общаться с сервером инициатором напрямую, по средствам Аякса в течении допустим нескольких минут для приёма ещё каких нибудь данных

  Ответить  
 
 автор: Valick   (07.06.2009 в 01:18)   письмо автору
 
   для: K   (07.06.2009 в 01:11)
 

достукивайтесь браузером до локального сервера с нужной Вам частотой
а локальным сервером "ловите" откуда угодно то что нужно

  Ответить  
 
 автор: K   (07.06.2009 в 01:11)   письмо автору
 
   для: PAT   (06.06.2009 в 23:16)
 

Кстати, провел эксперимент. Запустил локальный сервер (т.е. все происходило на одном и том же компьютере), в нем считал при первом обращении локального клиента его адрес (127.0.0.1:80) , запустил независимый процесс, который, выждав 1 минуту, послал клиенту сообщение. На Java выглядело так
Socket s=new Socket(ip.getHostName(),ip.getPort());
String msg="<script>alert('!!!!!')</script>";
s.getOutputStream().write(msg.getBytes());
Ошибок не было выдано, иначе обязательно возникло бы исключение
Браузер FireFox молчит как партизан
Попытался после этого куска вставить считывание ответа от клиента (браузера)
byte buf[] = new byte[64*1024];
int n= s.getInputStream().read(buf);
Ничего не считывается, после небольшого таймаута возвращается -1

Как достучаться до браузера (чтобы он хоть как-то прореагировал) ума не приложу.

  Ответить  
 
 автор: PAT   (06.06.2009 в 23:16)   письмо автору
 
   для: K   (06.06.2009 в 22:44)
 

Дело не в модеме, дело в провайдере, о чём я вам уже писал ранее, а вы не поняли.
У меня тоже ADSL-модем.

  Ответить  
 
 автор: K   (06.06.2009 в 22:44)   письмо автору
 
   для: PAT   (06.06.2009 в 21:14)
 

Странно, зашел на http://2ip.ru/ несколько раз, и все время один и тот же адрес

Может, потому что у меня ADSL-модем?

  Ответить  
 
 автор: PAT   (06.06.2009 в 21:14)   письмо автору
 
   для: K   (06.06.2009 в 16:38)
 

>"Новый IP назначается для каждой новой сессии?"

Нет. Сессии, ИМХО, тут вовсе не причём.
Я не специалист по TSP/IP-технологиям, потому могу говорить только о своих визуальных наблюдениях.

Например, если я зайду на страницу http://2ip.ru/, меня там определят как 123.45.67.890
При каждом обновлении этой страницы (хоть при ежесекундном) я буду видеть свой новый IP. И он
практически всякий раз будет иным. Разумеется - в пределах диапазона адресов моего провайдера.

Вот данные за последние пять нажатий на кнопку "Обновить" браузера (последняя группа IP-адреса):
ххх.ххх.хх.202
ххх.ххх.хх.204
ххх.ххх.хх.219
ххх.ххх.хх.251
ххх.ххх.хх.209

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-30] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования