Сокет занят ошибка

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Сокет занят ошибка

Сообщение xenomorph » 24.04.2004 (Сб) 12:59

Привет всем!
Вопрос:

Пишу чат, он использует Winsock.
Ессли он уже раз запущен, - сокет Is Listening,
происходит ошибка - сокет занят.

Как её обработать?
Выскакивает Error ...

Такой код:

'===================
On Error GoTo e1
ChatServer.WS.Listen
e1:
Exit Sub
'===================

и такой:

'===================
Private Sub WS_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
WS.Close
End Sub
'===================


Не прохдят :(
(вариант с получением "netstat /a" пройдёт, но есть ли вариант попроще?)
Посоветуйте пожалуйста ...

Огромное спасибо заранее!
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.04.2004 (Пн) 9:42

А что ты хочешь?
Имеется запущенный сервер #1, ты запускаешь еще один экземпляр сервера #2. При этом у #2 происходит WS_Error.
Если ты хочешь закрыть #1, то ничего у тебя не выйдет. Разве что переписать #1 и #2 так, чтобы можно было передавать информацию между процессами, тогда с из #2 уведомляешь #1, что ему надо закрыть сокет.
А если ты просто хочешь обработать ошибку на #2, то все делаешь правильно, только добавь CancelDisplay = True.
Lasciate ogni speranza, voi ch'entrate.

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Сообщение xenomorph » 26.04.2004 (Пн) 15:27

2 Alibek Tx!
Последнее имелось ввиду :)
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 29.04.2004 (Чт) 2:22

я решал проблему так:

Код: Выделить всё
Function ProveraPorta() As Boolean
On Error GoTo PERR
Net.Close
Net.LocalPort = 10056
Net.Listen
Net.Close
ProveraPorta = False
Exit Function

PERR:
Net.Close
ProveraPorta = True
Net.LocalPort = 0
End Function


Net - это Winsock
при False порт свободен ...
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)


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

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

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 26

    TopList