Страница: 1 |
Всем привет! Тут такой трабл...
А что у тебя в событии close винсока на сервере? Ничего. А чтото должно быть? Sorry, поспешил с ответом. Сервер не я писал. (pop.list.ru и smtp.list.ru) Я использую 25 или 110 порт (прием / отправка почты) Ну по идеи это не у тебя зависит, но у тебя должно быть следующие: -перед коннектом всегда делай winsock.close -при событии Winsock_close и _error тоже вставь winsock.close Govnuk Не помогает. После перезагрузки проги всё нормально конектится. по моему тут может быть 1 ошибка: неправильно выставляются хост и порт. А код не мог бы кинуть? Govnuk на кнопке connekt куда подевались enter'ы Еще раз Кад на FoxPro: в Init формы thisform.pageframe1.page1.wscClient.RemoteHost = "pop.list.ru" thisform.pageframe1.page1.wscClient.RemotePort = 110 thisform.pageframe1.page2.wscClient.RemoteHost = "smtp.list.ru" thisform.pageframe1.page2.wscClient.RemotePort = 25 на кнопке connekt winsock=thisform.pageframe1.page1.wscClient.obJECT sckClosed=0 If winsock.State <> sckClosed Then winsock.Close DO WHILE winsock.State <> sckClosed ENDDO ENDIF winsock.Connect thisform.Caption="Подключение..." lich=1 на кнопке dickonnect sckClosed =0 winsock=thisform.pageframe1.page1.wscClient.oBJECT winsock.SendData(ALLTRIM("QUIT")+Chr(13) + Chr(10)) IF winsock.State <> sckClosed winsock.Close ENDIF событие Error MESSAGEBOX(STR(number)+' '+description) ' и тут при повторном коннекте : 10061 Connection is forcefully rejected. событие DataArrival s="" thisform.pageframe1.page1.wscClient.GetData(@s) DO CASE CASE lich=1 IF SUBSTR(s,1,1)='+' lich=2 thisform.Caption='Авторизация...' thisform.pageframe1.page1.wscClient.SendData("USER mail"+Chr(13) + Chr(10)) ENDIF CASE lich=2 IF SUBSTR(s,1,1)='+' lich=3 thisform.pageframe1.page1.wscClient.SendData("PASS ********"+Chr(13) + Chr(10)) ENDIF CASE lich=3 IF SUBSTR(s,1,1)='+' lich=4 thisform.pageframe1.page1.wscClient.SendData("STAT"+Chr(13) + Chr(10)) ENDIF CASE lich=4 IF SUBSTR(s,1,1)='+' lich=5 thisform.pageframe1.page1.wscClient.SendData("RETR 1"+Chr(13) + Chr(10)) ENDIF CASE lich=5 IF SUBSTR(s,1,1)='+' lich=6 ENDIF CASE lich=6 lich=6 IF RIGHT(s,3)='.' ENDIF thisform.pageframe1.page1.edit2.Value=thisform.pageframe1.page1.edit2.Value+s ENDCASE Да,неправильно выставляются хост и порт. перед winsock.connect вставил form.init и всё заработало. Спасибо! а где у тебя winsock.localport?(при новом коннекте попрбуй выбирать случайный 35000-36000: randomize winsock.localport=int(rnd*1000+35000) ) и в событии error поставь winsock.close Ты меня опередил на 1 мин!!!!!!!!!!!! Страница: 1 |
Вопрос: WinSock Control
Добавлено: 02.12.03 11:56
Автор вопроса: lnu
Есть у меня две кнопки Connect и Disconnect.
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
NeForm@t
ICQ: 252999255
Вопросов: 36
Ответов: 247
Web-сайт:
Профиль | | #1
Добавлено: 02.12.03 14:40
Номер ответа: 2
Автор ответа:
lnu
Вопросов: 8
Ответов: 14
Профиль | | #2
Добавлено: 02.12.03 14:45
Номер ответа: 3
Автор ответа:
lnu
Вопросов: 8
Ответов: 14
Профиль | | #3
Добавлено: 02.12.03 14:49
Номер ответа: 4
Автор ответа:
NeForm@t
ICQ: 252999255
Вопросов: 36
Ответов: 247
Web-сайт:
Профиль | | #4
Добавлено: 02.12.03 14:58
Номер ответа: 5
Автор ответа:
lnu
Вопросов: 8
Ответов: 14
Профиль | | #5
Добавлено: 02.12.03 15:28
Похоже, что метод winsock.close не освобождает порт...
Номер ответа: 6
Автор ответа:
NeForm@t
ICQ: 252999255
Вопросов: 36
Ответов: 247
Web-сайт:
Профиль | | #6
Добавлено: 02.12.03 15:36
Номер ответа: 7
Автор ответа:
lnu
Вопросов: 8
Ответов: 14
Профиль | | #7
Добавлено: 02.12.03 15:44
в Init формы
thisform.pageframe1.page1.wscClient.RemoteHost = "pop.list.ru"thisform.pageframe1.page1.wscClient.RemotePort = 110thisform.pageframe1.page2.wscClient.RemoteHost = "smtp.list.ru"thisform.pageframe1.page2.wscClient.RemotePort = 25
winsock=thisform.pageframe1.page1.wscClient.obJECTsckClosed=0 If winsock.State <> sckClosed Then winsock.Close DO WHILE winsock.State <> sckClosed ENDDO ENDIF winsock.Connect thisform.Caption="Подключение..." lich=1
на кнопке dickonnectsckClosed =0winsock=thisform.pageframe1.page1.wscClient.oBJECTwinsock.SendData(ALLTRIM("QUIT")+Chr(13) + Chr(10)) IF winsock.State <> sckClosed winsock.Close ENDIF
событие ErrorMESSAGEBOX(STR(number)+' '+description)' и тут при повторном коннекте : 10061 Connection is forcefully rejected.
событие DataArrival s="" thisform.pageframe1.page1.wscClient.GetData(@s)DO CASE CASE lich=1 IF SUBSTR(s,1,1)='+' lich=2 thisform.Caption='Авторизация...' thisform.pageframe1.page1.wscClient.SendData("USER mail"+Chr(13) + Chr(10)) ENDIF CASE lich=2 IF SUBSTR(s,1,1)='+' lich=3 thisform.pageframe1.page1.wscClient.SendData("PASS ********"+Chr(13) + Chr(10)) ENDIF CASE lich=3 IF SUBSTR(s,1,1)='+' lich=4 thisform.pageframe1.page1.wscClient.SendData("STAT"+Chr(13) + Chr(10)) ENDIF CASE lich=4 IF SUBSTR(s,1,1)='+' lich=5 thisform.pageframe1.page1.wscClient.SendData("RETR 1"+Chr(13) + Chr(10)) ENDIF CASE lich=5 IF SUBSTR(s,1,1)='+' lich=6 ENDIF CASE lich=6 lich=6 IF RIGHT(s,3)='.' ENDIF thisform.pageframe1.page1.edit2.Value=thisform.pageframe1.page1.edit2.Value+sENDCASE
Номер ответа: 8
Автор ответа:
lnu
Вопросов: 8
Ответов: 14
Профиль | | #8
Добавлено: 02.12.03 15:52
Номер ответа: 9
Автор ответа:
lnu
Вопросов: 8
Ответов: 14
Профиль | | #9
Добавлено: 02.12.03 16:01
Номер ответа: 10
Автор ответа:
NeForm@t
ICQ: 252999255
Вопросов: 36
Ответов: 247
Web-сайт:
Профиль | | #10
Добавлено: 02.12.03 16:02
Номер ответа: 11
Автор ответа:
NeForm@t
ICQ: 252999255
Вопросов: 36
Ответов: 247
Web-сайт:
Профиль | | #11
Добавлено: 02.12.03 16:04
Номер ответа: 12
Автор ответа:
Last_Santa
ICQ: 200700724
Вопросов: 38
Ответов: 329
Web-сайт:
Профиль | | #12
Добавлено: 03.12.03 02:29
Всегда перед конектом вызывай .close