Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
AlleXXX
1

Динамическое создание WinSock для каждого соединения

26.08.2007, 08:47. Показов 1908. Ответов 13
Метки нет (Все метки)

Я хочу чтобы программа сервер, при запросе о подключении к ней клиента(для этой цели я использую ВинСок 'Выделенный каналл'(программа клиент подсоединяется и тем самым делает какбы-запрос), но вот незадача это работает всего один раз, потом программа сервер просто игнорирует запросы! я использую такой код на сервере:

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close
Winsock1.Accept requestID
On Error GoTo MsgError
If MsgBox('В сети обнаружен клиент, соединиться?', vbYesNo,) = vbYes Then _
Shell App.Path & 'chat.exe'
GoTo LabelEnd
MsgError:
MsgBox 'Не удалось запустить Chat!'
LabelEnd:
Winsock1.Close
DoEvents
Winsock1.Listen
End Sub

как сделать чтобы сервер воспринимал запросы и после.
Зарание спасибо!
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.08.2007, 08:47
Ответы с готовыми решениями:

Winsock, конец соединения
Как обозначить конец соединения между клиентом и сервером? Передается, например, от клиента:...

WinSock: перекидывание соединения на другой порт
подскажите, у меня написано серверное приложение, которое слушает входящие соединения на порт...

WinSock: механизм защиты от обрыва соединения
Моя программа, работающая через select и send и передающая информацию на сервер, работает при...

Передача видеопотока с вебкамеры посредством Winsock соединения
Доброго времени суток. Собственно интересует вопрос, как реализовать передачу видеопотока через...

13
messer
26.08.2007, 10:09 2
Tebe nujno dinamicheski sozdavat WinSock dlia kajdogo soedinenia
A tak on u tebia zakrivaetsa na priem (krome error)
I zabud kak strashnii son apperator GoTo LabelEnd
Davay milo ya tebe kinu horoshie primeri.
0 / 0 / 1
Регистрация: 16.04.2007
Сообщений: 50
26.08.2007, 13:58 3
2 messer: Чем тебе не нравиться GoTo в этом конкретном случае? Поскольку в VB пока нет try..finally код с GoTo получаеться достаточно читаемым и понятным.
0
messer
26.08.2007, 14:37 4
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
On Error GoTo MsgError
Winsock1.Close
Winsock1.Accept requestID
If MsgBox('В сети обнаружен клиент, соединиться?', vbYesNo,) = vbYes Then _
Shell App.Path & 'chat.exe'
Winsock1.Close
DoEvents
Winsock1.Listen
Exit sub
MsgError:
MsgBox 'Не удалось запустить Chat!'
End Sub
0 / 0 / 1
Регистрация: 16.04.2007
Сообщений: 50
26.08.2007, 16:48 5
Ну ладно, здесь просто код хреново написан, я не вчитывался - думал, что WinSock1.Close должен и при ошибке выполняться. Если ты подскажешь как красивее (без GoTo) написть такой код, буду благодарен:

Sub DoSomething ()
Resourse.Open

On Error GoTo ShitHappened
Resourse.Use
Resourse.DoWhatever

GoTo FreeResourses

ShitHappened:
MsgBox 'Shit !'
FreeResourses:
Resourse.Close
End Sub
0
messer
26.08.2007, 23:12 6
Sub DoSomething ()
On Error GoTo ShitHappened
Resourse.Open
Resourse.Use
Resourse.DoWhatever
Resourse.Close
Exit sub

ShitHappened:
MsgBox 'Shit !'
End Sub
0 / 0 / 1
Регистрация: 16.04.2007
Сообщений: 50
26.08.2007, 23:21 7
Думаешь я тупорылый, да ? Ты не понял. В моем коде если в Use или DoWhatever случиться облом, то Resourse.Close все-равно будет вызван.
0
messer
26.08.2007, 23:49 8
A ti poprobuy vstav tam err.raise
90% vilezet 'Shit'
0 / 0 / 1
Регистрация: 16.04.2007
Сообщений: 50
27.08.2007, 13:35 9
Да не 90, а 100% что он вылезет, но после этого будет вызван Resourse.Close...
0
messer
27.08.2007, 16:04 10
Proboval?
0 / 0 / 1
Регистрация: 16.04.2007
Сообщений: 50
27.08.2007, 16:43 11
Мне не нужно пробовать. Я за слова отвечаю ..
Ты можешь попробовать :

Private Sub Form_Load()
On Error GoTo ShitHappened
Err.Raise 1
GoTo FreeResourses
ShitHappened:
MsgBox 'ShitHappened'
FreeResourses:
MsgBox 'FreeResourses'
End Sub
0
messer
27.08.2007, 17:55 12
Voobsheto ya predlogal tak:
Povnimatelney.
Udachi.
I ti sam docazal chto GOTO eto ne krasivo.

Private Sub Form_Load()
On Error GoTo ShitHappened
Err.Raise 1
MsgBox 'FreeResourses'
Exit Sub
ShitHappened:
MsgBox 'ShitHappened'
End Sub
0 / 0 / 1
Регистрация: 16.04.2007
Сообщений: 50
27.08.2007, 18:22 13
Моя программа:

Нормальное выполнение:
MsgBox 'FreeResourses'

При ошибке:
MsgBox 'ShitHappened'
MsgBox 'FreeResourses'

Твоя программа:

Нормальное выполнение:
MsgBox 'FreeResourses'

При ошибке:
MsgBox 'ShitHappened'

И где освобождение ресурсов ? А если там был, скажем, adoRS.Close и ты его не закрыл и пытаешься с ним работать ?..

Без GoTo нормальный вариант выглядел бы так:
Private Sub Form_Load()
On Error GoTo ShitHappened
Err.Raise 1
MsgBox 'FreeResourses'
Exit Sub
ShitHappened:
MsgBox 'ShitHappened'
MsgBox 'FreeResourses'
End Sub

Если ты не понимаешь и теперь, то приглашаю тебя поработать в Ирландию. Среди местных спецов ты будешь чувствовать себя очень нормально, они тоже очень не любят освобождать ресурсы.
0
messer
27.08.2007, 19:02 14
Chobi osvobojdat resursi ih nujno snachala zaniat.
A na schet Evropi -vse tam duraki tolko v ROSSII vse umnie i bogatie .
Navernoe potomu chto resursi vovremia osvobojdaut.
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.08.2007, 19:02

Создание модемного соединения для виртуального ком порта
Доброго времени суток! Нужна помощь или совет, по созданию модемного соединения к виртуальному...

Создание соединения у web-part (для SharePoint Portal)
Добрый день! Только начал изучать sharepoint portal. Задача - написать свою web-part,...

Динамическое создание SQL для UpdateCommand не поддерживается для SelectCommand, не возвращающей никаких сведений о столбце ключей.
Добрый ночь! Возникла такая проблема. Вот код. SqlConnectionStringBuilder bu = new...

Динамическое создание типа для коллекции
Здравствуйте! Есть такая задумка, но не знаю как реализовать. Файл электронной таблицы, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru