Страница: 1 |
помогите плз разобраться %) Программа должна выбирать из базы некоторые e-mail, потом коннектится на 80 порт к некоему серваку, выгр[sensored]ь в соответствии с данным е-маилом некую страницу и отсылать ее по этому емалу в теле письма. Каждому е-маилу соответствует свое ключевое слово ( по этому ключ. слову она и должна определять страницу) если писать так : ..................... With Winsock1 .RemoteHost = "www.rover.msft" .RemotePort = "80" End With Winsock1.Connect .................... Private Sub Winsock1_Connect() Dim strCommand As String Dim strWebPage As String strWebPage = "http://www.rover.msft/search/search.asp" 'strWebPage = "/" strCommand = "GET " & strWebPage & " HTTP/1.0" & vbCrLf strCommand = strCommand & "Accept: */*" & vbCrLf strCommand = strCommand & "Accept: text/html" & vbCrLf strCommand = strCommand & vbCrLf Winsock1.SendData strCommand End Sub Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) 'Dim strData As String Winsock1.GetData Body, vbString End Sub Private Sub Winsock1_Close() Winsock1.Close End Sub то все работает, он страницу http://www.rover.msft/search/search.asp вытягивает. Если же winsock1.connect включить в while, то он вообще ничего не вытягивает sel.ActiveConnection = ... sel.Source = "SELECT ..." sel.CursorType = 0 sel.CursorLocation = 2 sel.LockType = 3 sel.Open With Winsock1 .RemoteHost = "www.rover.msft" .RemotePort = "80" End With While Not sel.EOF Bccstr = sel("email") KeyWord = sel("keyword") Winsock1.Connect Dim MailKeyword As New CDONTS.NewMail MailKeyword.From = " MailKeyword.Bcc = Bccstr MailKeyword.Subject = "TEST" MailKeyword.BodyFormat = 0 MailKeyword.MailFormat = 0 MailKeyword.Body = Body Body = Empty MailKeyword.Send Set MailKeyword = Nothing Sleep 2000 sel.MoveNext Winsock1.Close Wend Private Sub Winsock1_Connect() Dim strCommand As String Dim strWebPage As String strWebPage = "http://www.rover.msft/search/search.asp" '''?typeR=K&KeyWord=" & KeyWord & "&positionthis=999999" 'strWebPage = "/" strCommand = "GET " & strWebPage & " HTTP/1.0" & vbCrLf strCommand = strCommand & "Accept: */*" & vbCrLf strCommand = strCommand & "Accept: text/html" & vbCrLf strCommand = strCommand & vbCrLf FileWriten (strCommand) Winsock1.SendData strCommand End Sub Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) 'Dim strData As String Winsock1.GetData Body, vbString FileWriten (Body) End Sub Private Sub Winsock1_Close() Winsock1.Close End Sub почему он не хочет работать внутри while. Письма отсылает с пустым body
Ну хоть на первом цикле он фурычит? Вообще я думаю, что вот здесь чуточку некорректно: "GET " & strWebPage & " HTTP/1.0" & vbCrLf" Я бы написал так: "GET " & strWebPage & " HTTP/1.0\n\n" Хотя.. по большому счету по-барабану. По-моему код какой-то неполный... я например так и не понял кто такой этот CDONTS )) Упс... про \n\n забудь. Это я под линухом на Сях писал Хм, у тебя в While стоит команда Winsock.Connect. VB её выполняет, но ты не можешь заранее предсказать, когда случится событие Winsock_DataArrival. Скорее всего оно случится не сразу после Connect, если без DoEvents вообще случится до выхода из процедуры с циклом. В общем поставь Breakpoint в событие Winsock_DataArrival и проверь когда оно происходит. так что, никто не подскажет? Попробуй вместо Sleep: <PRE> Dim tTimer As Double tTimer = Timer Do Until tTimer - Timer > (размер_паузы_в_мс / 100) DoEvents Loop </PRE> Страница: 1 |
Вопрос: Winsock и While
Добавлено: 26.12.02 22:51
Автор вопроса: Rover
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
User Unknown
Вечный Юзер!
ICQ: uu@jabber.cz
Вопросов: 120
Ответов: 3302
Профиль | | #1
Добавлено: 27.12.02 09:48
Номер ответа: 2
Автор ответа:
User Unknown
Вечный Юзер!
ICQ: uu@jabber.cz
Вопросов: 120
Ответов: 3302
Профиль | | #2
Добавлено: 27.12.02 09:54
Номер ответа: 3
Автор ответа:
Rover
Вопросов: 13
Ответов: 12
Профиль | | #3
Добавлено: 27.12.02 14:51
CDONTS это чтоб почту отправлять
Номер ответа: 4
Автор ответа:
Андрей Щёкин [darxeth]
ICQ: 161560107
Вопросов: 9
Ответов: 52
Web-сайт:
Профиль | | #4
Добавлено: 27.12.02 20:02
Номер ответа: 5
Автор ответа:
Rover
Вопросов: 13
Ответов: 12
Профиль | | #5
Добавлено: 27.12.02 22:41
пробовал паузу аж на 10 сек ставить... (у меня сервак 300 коннекшинов обрабатывает за 7 сек)
Номер ответа: 6
Автор ответа:
Rover
Вопросов: 13
Ответов: 12
Профиль | | #6
Добавлено: 28.12.02 19:49
Номер ответа: 7
Автор ответа:
Андрей Щёкин [darxeth]
ICQ: 161560107
Вопросов: 9
Ответов: 52
Web-сайт:
Профиль | | #7
Добавлено: 29.12.02 19:45