diver
|
|
1 | |
Возможна ли в ASP работа с сокетами?15.10.2007, 21:53. Показов 3699. Ответов 30
Метки нет Все метки)
(
Возможна ли в ASP работа с сокетами?
Мне необходимо передать находящемуся на другом сервере скрипту (не ASP'шному) некоторую информацию, получить от него ответ (в XML формате), а затем ответ обработать использованием местного XSL шаблона. Возможно ли это сделать на ASP и если да то как?! |
|
15.10.2007, 21:53 | |
Ответы с готовыми решениями:
30
Создание БД: Возможна ли связка SQL Express + IIS 7 + ASP.NET Работа с сокетами Работа с сокетами Работа с сокетами! |
1 / 1 / 0
Регистрация: 21.06.2007
Сообщений: 654
|
|
16.10.2007, 02:49 | 2 |
nugen COM component. Posmotri VB biblioteki moget naidesh
0
|
0 / 0 / 0
Регистрация: 03.10.2007
Сообщений: 129
|
|
16.10.2007, 10:21 | 3 |
А этот 'не-ASPшный' скрипт на IIS? То есть, он получает HTTP запрос, или вообще со своим протоколом работает?
0
|
diver
|
|
16.10.2007, 14:12 | 4 |
этот второй скрипт находится на том же серваке и работает по HTTP протоколу, а данные принимает в XML формате.
|
0 / 0 / 0
Регистрация: 03.10.2007
Сообщений: 129
|
|
16.10.2007, 14:35 | 5 |
тогда, думаю, можно так:
<% dim xmlhttp, xmldoc set xmldoc = Server.Createobject('Microsoft.XMLDOM') xmldoc.loadXML('<BOOKS><BOOK></BOOK></BOOKS>') set xmlhttp = Server.Createobject('Microsoft.XMLHTTP') xmlhttp.Open('POST', 'http://myserver/myscript/', false); xmlhttp.Send xmldoc Response.ContentType='text/xml' xmlhttp.responseXML.save(Response) %> тот самый скрипт лежит по адресу http://myserver/myscript/, он возвращает XML. Наша ASP его принимает и возвращает броузеру тот же XML. PS. Если я правильно задачку понял...
0
|
quit
|
|
16.10.2007, 16:24 | 6 |
Я нечто подобное писал на Java
Cдесь надо подходить с другой стороны. Т.е. представь что у asp сокеты уже открыты и все что ему надо делать - Response.BinaryWrite Request.BinaryRead А тебе Соедениться с ним извне : можно указав полный путь например - http://www.pupcin.ru/aspTest.asp а там дальше как обычно. Только ограничений - сам понимаешь полным полно. |
0 / 0 / 0
Регистрация: 03.10.2007
Сообщений: 129
|
|
16.10.2007, 16:46 | 7 |
Здесь нельзя подходить с другой стороны, потому что у ASP нет сокетов, они у IIS. Response реализует 'корзину', кидая в которую, мы через IIS отдаем ответ клиенту.
А вопрос в другом: как из ASP кинуть данные в другую ASP. Можно организовать все через 'мост', которым будет клиент, но это - :-х, не скажу, слово плохое. Остаются ActiveX, например MS Internet Transfer Control, или те, которые есть в XMLDOM. Вторые как раз по задачке подходят.
0
|
quit
|
|
16.10.2007, 17:10 | 8 |
1-
Он сказал что хочет передать из ASP инфо НЕ ASP-ешному скрипту. 2- А на счет сокетов - он спросил и я ответил представь как будто есть (для простоты изложения) я же не сказал что они есть. |
quit
|
|
16.10.2007, 17:14 | 9 |
А обойтись можно и без
ActiveX. Если сделать как я уже сказал. |
0 / 0 / 0
Регистрация: 03.10.2007
Сообщений: 129
|
|
16.10.2007, 17:21 | 10 |
Ты код напиши, как это сделать. Передать HTTP запрос из ASP страницы некоторому узлу и получить ответ. Без ActiveX, чистым ASP.
Только не допускай, что сокеты есть и они открыты, это не поможет. Полностью работоспособный код, без любых абстракций.
0
|
quit
|
|
16.10.2007, 17:44 | 11 |
Я тебе завтра его пришлю.
Сейчас дома лежит. Только он на Java - не смущает ? в работе можно посмотреть http://www.km.ru/entertaiment/crossword/ всмысле там апплет на JAVA весь код не дам по соображениям того что там больше не работаю а конкретную часть с сокетами - завтра. |
0 / 0 / 0
Регистрация: 03.10.2007
Сообщений: 129
|
|
16.10.2007, 17:48 | 12 |
Нет, в JAVA, да еще и аплет, не надо, я это и сам делал - http://www.nsc.kz/assetseval/deposits/, там даные тоже из ASP читаются.
Проблема в том, что: 1) в Java есть сокеты, а в ASP их нет; 2) аплет на сервере запустить 'трудновато' ;-)
0
|
quit
|
|
16.10.2007, 17:53 | 13 |
Если ты будешь внемательней то заметиш
что когда ты отгадываешь слова они 1-заносятся в базу 2-вся инфа о тебе тоже в базе 3-Java читает только в начале а потом передает читает опять передает. -и все это через ASP+Java. Сокетов в ASP действительно нет все дело в хитрости. |
0 / 0 / 0
Регистрация: 03.10.2007
Сообщений: 129
|
|
16.10.2007, 18:48 | 14 |
1. Ухитрись запустить аплет на сервере
2. Без аплета и других производных от JAVA ухитрись создать соединение с неким сервером (опять же на сервере, то есть средствами ASP, и без ActiveX). Когда одно из этого ты сделаешь, я, честное слово, сниму перед тобой шляпу.
0
|
quit
|
|
16.10.2007, 18:53 | 15 |
Я согласен с Вами.
Сдесь реч о другой хитрости - когда работа на сервере переходит на сторону клиента. Т.е. доменирующим становится клиент каторый пользуется средствами предоставленными на сервере - в данности средствами ASP |
0 / 0 / 0
Регистрация: 03.10.2007
Сообщений: 129
|
|
16.10.2007, 19:00 | 16 |
К сожалению, в том и есть проблема, что клиента в данной задаче нельзя использовать. Надо как-то обойтись без него. Можно было бы отправить ему страницу со скриптом, генерирующим XML, и автоматически отправляющим его далее, нужному URL, потом опять же через клиента вернуть ответ. Но вдруг юзер закроет броузер? Все пропало.
PS. Не называй меня на 'Вы', я еще молод ;-)
0
|
diver
|
|
16.10.2007, 21:40 | 17 |
спасибо за совет x-mailer! твой первый ответ был как раз то что нужно! а потом, признаюсь честно, я уже не совсем понимал
о чем вы дискутируете:-) |
diver
|
|
17.10.2007, 03:56 | 18 |
как вы думаете, многоуважаемый All, почему перестал работать этот простой скрипт:
<% Set xmlhttp = Server.Createobject('Microsoft.XMLHTTP') xmlhttp.Open 'POST', 'http://127.0.0.1/scripts/LoginResponse.asp', False xmlhttp.Send xmldoc Response.ContentType='text/xml' xmlhttp.responseXML.save(Response) %> еше сегодня утром он работал, а теперь подвисает на вызове xmlhttp.Send .... ![]() |
diver
|
|
17.10.2007, 03:59 | 19 |
... xmldoc, конечно же, определяется чуть выше:
xmlQuery = '<query command='Login'>' xmlQuery = xmlQuery + '<param name='uname' value='' + Request.Form('uname') + ''/>' xmlQuery = xmlQuery + '<param name='pwd' value='' + Request.Form('pwd') + ''/>' xmlQuery = xmlQuery + '<param name='resInfo' value='2'/>' xmlQuery = xmlQuery + '</query>' Set xmldoc = Server.Createobject('Microsoft.XMLDOM') xmldoc.async='false' xmldoc.loadXML(xmlQuery) |
0 / 0 / 0
Регистрация: 03.10.2007
Сообщений: 129
|
|
17.10.2007, 10:24 | 20 |
Трудно предположить, отчего он перестал работать. Если 'подвисает' (не выдает ошибку, а именно подвисает), то, наверное, не может дождаться ответа от сервера. Так как вызов не асинхронный, то XMLHTTP будет ждать, пока сервер либо не вернет что-то, либо не закроет соединение.
Чтобы проверить, до каких событий при посылке доходит дело, и проверить на ошибку в возвращаемом xml, попробуй написать такую HTML страницу: <script language=jscript> var xmlhttp=null; var uname='user'; var pwd='password'; function LoadXML() { var xmlQuery = '<query command='Login'>'; xmlQuery = xmlQuery + '<param name='uname' value='' + uname + ''/>'; xmlQuery = xmlQuery + '<param name='pwd' value='' + pwd + ''/>'; xmlQuery = xmlQuery + '<param name='resInfo' value='2'/>'; xmlQuery = xmlQuery + '</query>'; var xmldoc = new ActoveXObject('Microsoft.XMLDOM') xmldoc.loadXML(xmlQuery); xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); xmlhttp.Open('POST', 'http://127.0.0.1/scripts/LoginResponse.asp', true); //вызов асинхронный xmlhttp.onreadystatechange=CheckState; xmlhttp.Send(xmldoc); } function CheckState() { alert(xmlhttp.readyState); if (xmlhttp.readyState == 4) { var err = xmlhhtp.responseXML.parseError; if (err.errorCode != 0) alert('Error: ' + err.reason); else alert('Success'); } } </script> Надеюсь, чем-то смог помочь.
0
|
17.10.2007, 10:24 | |
Помогаю со студенческими работами здесь
20
Работа с Сокетами Работа с сокетами Работа с сокетами Работа с сокетами на Си Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |