Страница: 1 |
Вопрос: Послать HTTP-пакет серверу и получить ответ | Добавлено: 22.04.05 17:54 |
Автор вопроса: ![]() |
Я все не могу выбрать: каким способом организовать эту процедуру (сабж)
Пользую Microsoft Internet Transfer Control 6.0 (MSINET.OCX), но при выгрузке программы VB-IDE подвисает, а иногда вообще вылетает :( Как недавно убедился использование АПИ WinInet.dll дает тот же результат (по крайней мере такое же подвисание) Winsock: Сложно организовывается процедура отправки-приема пакета. Тем более нужно както (незнаю пока как) узнать по URL имя сервера к которому коннектиться. WinSock API & Tyaga (DaSharm) еще не пробовал, но сложность как с винсоком WebBrowser... ну мне бы побыстрее получать, а эта %%%ня тормознута на это дело. Подскажите как избавиться от описанных выше странностей Inet или может перейти на WinSock? С WinSock я более-менее знаком, но как же получить имя сервера? |
Ответы | Всего ответов: 12 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Лидер форума ICQ: 216865379 Вопросов: 106 Ответов: 9979 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 22.04.05 18:00 |
Отрезаешь спереди http://, сзади все до крайнего слева слеша, потом gethostbyname |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ICQ: 780477 Вопросов: 2 Ответов: 23 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 22.04.05 20:35 |
Используй библиотеки сторонних разработчиков. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 224 Ответов: 3777 |
Web-сайт: Профиль | Цитата | #3 | Добавлено: 22.04.05 20:40 |
gethostbyname
это WinSock'овская функция? 2 DaSharm_tmp: а какие например можно юзать? на VBNET есть такие или ссылки на них? ЗЫ: С возвращением! |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 247906854 Вопросов: 133 Ответов: 882 |
Web-сайт: Профиль | Цитата | #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 '// âñïîìîãàòåëüíàÿ ô-öèÿ äëÿ 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 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 224 Ответов: 3777 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 22.04.05 22:30 |
'// âñïîìîãàòåëüíàÿ ô-öèÿ äëÿ
Блин! чё с коментприями???? я сегодня тоже с русскими буквами выложил код такая же ботва ![]() боюсь человек не разберёт зачем я там цикл влепил ![]() |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ICQ: 780477 Вопросов: 2 Ответов: 23 |
Web-сайт: Профиль | Цитата | #6 | Добавлено: 22.04.05 22:57 |
Моя функция меньше и лучше ![]() Public Function GetIPfromNetName(NetName As String) As String '© DaSharm ICQ: 780477 ![]() ![]() ![]() ![]() 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 Автор ответа: ![]() ![]() ![]() ICQ: 780477 Вопросов: 2 Ответов: 23 |
Web-сайт: Профиль | Цитата | #7 | Добавлено: 22.04.05 22:59 |
но как же получить имя сервера?
ты что имеешь ввиду? |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ICQ: 295002202 Вопросов: 87 Ответов: 1684 |
Профиль | Цитата | #8 | Добавлено: 27.04.05 06:31 |
Я имею в виду из запроса
http://www.mail.ru - mail.ru http://mail.ru - mail.ru (Может это два разных имени?) Что? Только имя сервера выцепить можно только методом "обрезания"? Я тут поэкспериментировал и нашел что WinSock работает вполне прилично, но после множественного обращения к серверу TCPView показывает что остается куча "ждущих" соединений системы - это не есть гуд, как это можно поправить - как првильно завершать работу с сервером. |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 247906854 Вопросов: 133 Ответов: 882 |
Web-сайт: Профиль | Цитата | #9 | Добавлено: 27.04.05 20:41 |
Давно это - не помню счас, но я по-моему тоже сталкивался с проблемой узнавания "когда страница загрузилась". Потом отказался от Keep-Alive и сервак вроде сам стал обрывать связь по окончании пересылки.
По имени сервера: Ясно как день, что это разные имена. А почему у тебя напротив http://www.mail.ru стоит mail.ru? ты же обрежешь тока http у тебя должен www.mail.ru остаться. Вот и узнавай его ip. Хотя я даже и этого не делал, насколько я помню, винсок сам ip пробивает. А про комментарии: сдаётся мне что таким образом нам выливается недавний хак. Авторы так вот грубо решили вопросы безопасности. 8) |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ICQ: 295002202 Вопросов: 87 Ответов: 1684 |
Профиль | Цитата | #10 | Добавлено: 28.04.05 05:49 |
Connection: Keep-alive
В отправляемом пакете? Попробую, не делал. WinSock.Close при этом вызывать не надо? |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 247906854 Вопросов: 133 Ответов: 882 |
Web-сайт: Профиль | Цитата | #11 | Добавлено: 28.04.05 19:26 |
Наоборот: Connection: Close
Тогда сервер должен обрывать связь, когда всё пошлёт. Тока что открыл свой старый исходник - работает, но глюкаво - иногда не полностью страница загружается... |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ICQ: 295002202 Вопросов: 87 Ответов: 1684 |
Профиль | Цитата | #12 | Добавлено: 29.04.05 06:09 |
Вышли мне плз твой исходник. У меня вся страница откроется, т. к. ее размер
от 1 до 500 байт. |
Страница: 1 |
|