Как правильно закрыть соеденение ВИНСОК?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
zaf
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 27.03.2006 (Пн) 23:04

Как правильно закрыть соеденение ВИНСОК?

Сообщение zaf » 13.06.2006 (Вт) 17:53

Надо добавь WinSock Control и кнопку. В код формы вставить:

Winsock1.Protocol = sckTCPProtocol 'Установка протокола
Winsock1.Connect "имя_сервера", 80 'подключение через порт 80
While Not Winsock1.State = 7 'Ждем, пока подключится.
DoEvents '
Wend '

Parametrs="параметр1=значение&параметр2=значение" 'сохраняем параметры в 'переменной

Далее все зависит от того, каким методом передавать. Если через метод POST, то:

Winsock1.SendData "POST /адрес_скрипта HTTP/1.1" & vbCrLf
Winsock1.SendData "Content-Type: application/x-www-form-urlencoded" & vbCrLf
Winsock1.SendData "Host: имя_сервера" & vbCrLf
Winsock1.SendData "Content-Length: " & len(Parametrs) & vbCrLf & vbCrLf
Winsock1.SendData Parametrs & vbCrLf

Если через метод GET, то:

Winsock1.SendData "GET /адрес_скрипта?" & Parametrs & " HTTP/1.0" & vbCrLf & vbCrLf

Далее сервер запустит скрипт и передаст данные, еоторые выдаст скрипт, т.е страницу, которая появилась бы в браузере. Если надо принять эти данные, то добавь еще это:

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
Winsock1.GetData Data
End Sub

В переменной Data будут только что принятые данные, сохрани их где-нибудь (например в другой переменной), можешь делать с ними, что захочешь. Сначала сервер выдаст ответ типа:

HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Fri, 22 Feb 2002 11:12:20 GMT
Connection: Keep-Alive
Content-Length: 8
Content-Type: text/html
Set-Cookie: ASPSESSIONIDQGQQQLBQ=DFPBBDBDJOGMHODFDFALACNK; path=/
Cache-control: private

После того, как параметры закончатся, будет пустая строка, а потом страница.
Количество символов указано в параметре Content-Length.


Как правильно закрыть соеденение Winsock??

Я делаю так Winsock1.Close но как я понял это я грубо разрываю, не давая серверу знать об этом

Vinechka
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 381
Зарегистрирован: 10.05.2005 (Вт) 4:07
Откуда: Москва

Сообщение Vinechka » 13.06.2006 (Вт) 19:03

Если ты все что нужно с этого подключения взял - делай Close. Сервер не дурак тебе, уж кто кто, а он знает, что ты Disconnected.

zaf
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 27.03.2006 (Пн) 23:04

Сообщение zaf » 13.06.2006 (Вт) 22:05

Vinechka писал(а):Если ты все что нужно с этого подключения взял - делай Close. Сервер не дурак тебе, уж кто кто, а он знает, что ты Disconnected.


Да но он позно догадывается!
Я открываю около 100та соединений подряд

И очень часто я это делаю

Админ меня заблокал сказал что типа дос атака :lol:
Я ему обяснил и он сказал что есть лимит с одного IP

и поэтому необходимо дать ему об этом знать ( когда разрываеш )
Help plz

zaf
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 27.03.2006 (Пн) 23:04

Сообщение zaf » 13.06.2006 (Вт) 22:38

Увеличу ка я таймер!

Е сли ответа нет т.е. он мя заблокал тогда не буду его ждать
Как я это сделаю?

Timer2.Enabled = True

While Not Winsock1(i).State = 7 'Æäåì, ïîêà ïîäêëþ÷èòñÿ.
If Label4.Caption = "0" Then Winsock1(i).Close: GoTo 100
DoEvents '
Wend '

Timer2.Enabled = False
Label4.Caption = "1"

Private Sub Timer2_Timer()
Label4.Caption = "0"
End Sub

Нормально? или глупо?
Интервал второго таймера 5 сек
Т.е. у мя таймаут получается самый настоящий!
Урааа!!!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 14

    TopList  
cron