Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: WinSock Control Добавлено: 02.12.03 11:56  

Автор вопроса:  lnu

Всем привет!

Тут такой трабл...
Есть у меня две кнопки Connect и Disconnect.

нажимаем первую: winsock.connect ....
другую: winsock.close
все нормально работает...
нажимаем опять первую и ... тут у нас ошибка 10061(Connection is forcefully rejected.)
 
Как мне нормально закрить соединение, а потом снова соединится?
 
Заранее спасибо.

Ответить

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

Номер ответа: 1
Автор ответа:
 NeForm@t



ICQ: 252999255 

Вопросов: 36
Ответов: 247
 Web-сайт: g--k.newmail.ru
 Профиль | | #1
Добавлено: 02.12.03 14:40

А что у тебя в событии close винсока на сервере?

Ответить

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



Вопросов: 8
Ответов: 14
 Профиль | | #2 Добавлено: 02.12.03 14:45

Ничего. А чтото должно быть?

Ответить

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



Вопросов: 8
Ответов: 14
 Профиль | | #3 Добавлено: 02.12.03 14:49

Sorry, поспешил с ответом.

Сервер не я писал. (pop.list.ru и smtp.list.ru)

Я использую 25 или 110 порт (прием / отправка почты)

Ответить

Номер ответа: 4
Автор ответа:
 NeForm@t



ICQ: 252999255 

Вопросов: 36
Ответов: 247
 Web-сайт: g--k.newmail.ru
 Профиль | | #4
Добавлено: 02.12.03 14:58

Ну по идеи это не у тебя зависит, но у тебя должно быть следующие:

-перед коннектом всегда делай winsock.close

-при событии Winsock_close и _error тоже вставь winsock.close

Govnuk

Ответить

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



Вопросов: 8
Ответов: 14
 Профиль | | #5 Добавлено: 02.12.03 15:28

Не помогает.

После перезагрузки проги всё нормально конектится.
Похоже, что метод winsock.close не освобождает порт...

 

Ответить

Номер ответа: 6
Автор ответа:
 NeForm@t



ICQ: 252999255 

Вопросов: 36
Ответов: 247
 Web-сайт: g--k.newmail.ru
 Профиль | | #6
Добавлено: 02.12.03 15:36

по моему тут может быть 1 ошибка: неправильно выставляются хост и порт.

А код не мог бы кинуть?

Govnuk

Ответить

Номер ответа: 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

на кнопке connekt

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

на кнопке dickonnect

sckClosed =0winsock=thisform.pageframe1.page1.wscClient.oBJECTwinsock.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+sENDCASE

Ответить

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



Вопросов: 8
Ответов: 14
 Профиль | | #8 Добавлено: 02.12.03 15:52

куда подевались 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

Ответить

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



Вопросов: 8
Ответов: 14
 Профиль | | #9 Добавлено: 02.12.03 16:01

Да,неправильно выставляются хост и порт.

перед winsock.connect вставил form.init и всё заработало.

Спасибо!

Ответить

Номер ответа: 10
Автор ответа:
 NeForm@t



ICQ: 252999255 

Вопросов: 36
Ответов: 247
 Web-сайт: g--k.newmail.ru
 Профиль | | #10
Добавлено: 02.12.03 16:02

а где у тебя winsock.localport?(при новом коннекте попрбуй выбирать случайный 35000-36000:

randomize

winsock.localport=int(rnd*1000+35000)

)

и в событии error поставь winsock.close

Ответить

Номер ответа: 11
Автор ответа:
 NeForm@t



ICQ: 252999255 

Вопросов: 36
Ответов: 247
 Web-сайт: g--k.newmail.ru
 Профиль | | #11
Добавлено: 02.12.03 16:04

Ты меня опередил на 1 мин!!!!!!!!!!!!

Ответить

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



ICQ: 200700724 

Вопросов: 38
Ответов: 329
 Web-сайт: localhost
 Профиль | | #12
Добавлено: 03.12.03 02:29
Всегда перед конектом вызывай .close

Ответить

Страница: 1 |

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



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