Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Послать HTTP-пакет серверу и получить ответ Добавлено: 22.04.05 17:54  

Автор вопроса:  ZagZag | ICQ: 295002202 
Я все не могу выбрать: каким способом организовать эту процедуру (сабж)

Пользую Microsoft Internet Transfer Control 6.0 (MSINET.OCX), но при
выгрузке программы VB-IDE подвисает, а иногда вообще вылетает :(

Как недавно убедился использование АПИ WinInet.dll дает тот же
результат (по крайней мере такое же подвисание)

Winsock: Сложно организовывается процедура отправки-приема пакета. Тем более
нужно както (незнаю пока как) узнать по URL имя сервера к которому
коннектиться.

WinSock API & Tyaga (DaSharm) еще не пробовал, но сложность как с винсоком

WebBrowser... ну мне бы побыстрее получать, а эта %%%ня тормознута на это
дело.


Подскажите как избавиться от описанных выше странностей Inet или может
перейти на WinSock?
С WinSock я более-менее знаком, но как же получить имя сервера?

Ответить

  Ответы Всего ответов: 12  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 22.04.05 18:00
Отрезаешь спереди http://, сзади все до крайнего слева слеша, потом gethostbyname

Ответить

Номер ответа: 2
Автор ответа:
 DaSharm_tmp



ICQ: 780477 

Вопросов: 2
Ответов: 23
 Web-сайт: www.eicq.net.ru
 Профиль | | #2
Добавлено: 22.04.05 20:35
Используй библиотеки сторонних разработчиков.

Ответить

Номер ответа: 3
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #3
Добавлено: 22.04.05 20:40
gethostbyname

это WinSock'овская функция?



2 DaSharm_tmp:
а какие например можно юзать? на VBNET есть такие или ссылки на них?


ЗЫ: С возвращением!

Ответить

Номер ответа: 4
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #4
Добавлено: 22.04.05 22:10
Public Function GetIPFromHostName(ByVal sHostName As String) As String
'// ô-öèÿ äëÿ óçíàâàíèÿ IP àäðåñà ïî èìåíè.
'// âçÿòî íà  sources.ru
   Dim nbytes As Long
   Dim ptrHosent As Long
   Dim ptrName As Long
   Dim ptrAddress As Long
   Dim ptrIPAddress As Long
   Dim sAddress As String
   sAddress = Space$(4)
   ptrHosent = GetHostByName(sHostName & vbNullChar)
   If ptrHosent <> 0 Then
      ptrAddress = ptrHosent + 12
      CopyMemory ptrAddress, ByVal ptrAddress, 4
      CopyMemory ptrIPAddress, ByVal ptrAddress, 4
      CopyMemory ByVal sAddress, ByVal ptrIPAddress, 4
      GetIPFromHostName = IPToText(sAddress)
   End If
End Function
Private Function IPToText(ByVal IPAddress As String) As String
'// &#226;&#241;&#239;&#238;&#236;&#238;&#227;&#224;&#242;&#229;&#235;&#252;&#237;&#224;&#255; &#244;-&#246;&#232;&#255; &#228;&#235;&#255; GetIPFromHostName
   IPToText = CStr(Asc(IPAddress)) & "." & _
              CStr(Asc(Mid$(IPAddress, 2, 1))) & "." & _
              CStr(Asc(Mid$(IPAddress, 3, 1))) & "." & _
              CStr(Asc(Mid$(IPAddress, 4, 1)))
End Function

Не моё. Первоначального автора не знаю, но счас этого кода стока везде лежит, что можно считать его общим.

Ответить

Номер ответа: 5
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #5
Добавлено: 22.04.05 22:30
'// &#226;&#241;&#239;&#238;&#236;&#238;&#227;&#224;&#242;&#229;&#235;&#252;&#237;&#224;&#255; &#244;-&#246;&#232;&#255; &#228;&#235;&#255;


Блин! чё с коментприями???? я сегодня тоже с русскими буквами выложил код такая же ботва :(
боюсь человек не разберёт зачем я там цикл влепил :)

Ответить

Номер ответа: 6
Автор ответа:
 DaSharm_tmp



ICQ: 780477 

Вопросов: 2
Ответов: 23
 Web-сайт: www.eicq.net.ru
 Профиль | | #6
Добавлено: 22.04.05 22:57

Моя функция меньше и лучше :)

Public Function GetIPfromNetName(NetName As String) As String
'© DaSharm ICQ: 780477
 ;Dim gv As Long
 ;Dim an As hostent
 ;Dim IPaddr As Long
 ;Dim tmpIPAddr(3) As Byte
 gv = gethostbyname(Trim(NetName))
 If gv = 0 Then Exit Function
 CopyMemory an, ByVal gv, Len(an)
 CopyMemory IPaddr, ByVal an.hAddrList, 4
 CopyMemory tmpIPAddr(0), ByVal IPaddr, 4
 GetIPfromNetName = tmpIPAddr(0) & "." & tmpIPAddr(1) & "." & tmpIPAddr(2) & "." & tmpIPAddr(3)
End Function

Ответить

Номер ответа: 7
Автор ответа:
 DaSharm_tmp



ICQ: 780477 

Вопросов: 2
Ответов: 23
 Web-сайт: www.eicq.net.ru
 Профиль | | #7
Добавлено: 22.04.05 22:59
но как же получить имя сервера?


ты что имеешь ввиду?

Ответить

Номер ответа: 8
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #8 Добавлено: 27.04.05 06:31
Я имею в виду из запроса
http://www.mail.ru - mail.ru
http://mail.ru - mail.ru
(Может это два разных имени?)
Что? Только имя сервера выцепить можно только методом "обрезания"?

Я тут поэкспериментировал и нашел что WinSock работает вполне прилично, но
после множественного обращения к серверу TCPView показывает что остается
куча "ждущих" соединений системы - это не есть гуд, как это можно
поправить - как првильно завершать работу с сервером.

Ответить

Номер ответа: 9
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #9
Добавлено: 27.04.05 20:41
Давно это - не помню счас, но я по-моему тоже сталкивался с проблемой узнавания "когда страница загрузилась". Потом отказался от Keep-Alive и сервак вроде сам стал обрывать связь по окончании пересылки.
По имени сервера:
Ясно как день, что это разные имена.
А почему у тебя напротив
http://www.mail.ru стоит mail.ru?
ты же обрежешь тока http у тебя должен www.mail.ru остаться. Вот и узнавай его ip. Хотя я даже и этого не делал, насколько я помню, винсок сам ip пробивает.
А про комментарии: сдаётся мне что таким образом нам выливается недавний хак. Авторы так вот грубо решили вопросы безопасности. 8)

Ответить

Номер ответа: 10
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #10 Добавлено: 28.04.05 05:49
Connection: Keep-alive
В отправляемом пакете? Попробую, не делал.
WinSock.Close при этом вызывать не надо?

Ответить

Номер ответа: 11
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #11
Добавлено: 28.04.05 19:26
Наоборот: Connection: Close
Тогда сервер должен обрывать связь, когда всё пошлёт. Тока что открыл свой старый исходник - работает, но глюкаво - иногда не полностью страница загружается...

Ответить

Номер ответа: 12
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #12 Добавлено: 29.04.05 06:09
Вышли мне плз твой исходник. У меня вся страница откроется, т. к. ее размер
от 1 до 500 байт.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам