Страница: 1 |
Страница: 1 |
Вопрос: Winsock Problem... Помогите!
Добавлено: 19.09.04 11:46
Автор вопроса: Black Dragon | Web-сайт:
Народ, у меня такая проблема:
Вот у меня программка по следующему типу: выбирается тип используемого компьютера (сервер или клиент, соответственно, два Winsocket'а). Если выбран тип "клиент", то нужен IP-адрес сервера и № порта. Если тип "сервер" - только № порта. Я вставил у "серверского" Winsocket'а обработчик ConnectionRequest:
WinSocket1.Close
WinSocket1.Accept RequestID
У "клиентовского" WinSocket'а делаю:
WinSocket2.RemoteHost = <IP-адрес>
WinSocket2.RemotePort = <№ порта>
WinSocket2.Connect
Через несколько секунд вылезает сообщение: "Connection is ... rejected", т.е. "Соединение отклюнено". Вроде бы все написал (вышеприведенное - это не все), а не работает.
Если кому не понятно:
Я компилирую EXE файл. Запускаю его, выбираю тип компа - "сервер", № порта - 101. В VB нажимаю Run (F5), выбираю тип "клиент"; адрес - 127.0.0.1 (локальный), № порта - 101. Клиент посылает...
Подскажите, что делать.
Ответы
Всего ответов: 14
Номер ответа: 1
Автор ответа:
RomaVis
ICQ: 266287351
Вопросов: 31
Ответов: 147
Профиль | | #1
Добавлено: 19.09.04 18:36
Скажы одно, а у тебя интернет или локальная сеть???
Номер ответа: 2
Автор ответа:
RomaVis
ICQ: 266287351
Вопросов: 31
Ответов: 147
Профиль | | #2
Добавлено: 19.09.04 18:36
Просто ели интернет - адрес 127.0.0.1
Номер ответа: 3
Автор ответа:
RomaVis
ICQ: 266287351
Вопросов: 31
Ответов: 147
Профиль | | #3
Добавлено: 19.09.04 18:37
А ели лок. сеть - то 127.0.0.1 не подойдет!
Номер ответа: 4
Автор ответа:
RomaVis
ICQ: 266287351
Вопросов: 31
Ответов: 147
Профиль | | #4
Добавлено: 19.09.04 18:37
Надо свой сетевой IP писать тогда!
Но вроде все в проге прально...
Незнаю в чём дело....
Номер ответа: 5
Автор ответа:
RomaVis
ICQ: 266287351
Вопросов: 31
Ответов: 147
Профиль | | #5
Добавлено: 19.09.04 18:40
А да! Кроме RemotePort = <№порта> надо ещё и LocalPort = <№порта>
Номер ответа: 6
Автор ответа:
RomaVis
ICQ: 266287351
Вопросов: 31
Ответов: 147
Профиль | | #6
Добавлено: 19.09.04 18:41
Просто надо ещё и порт клиента поставить...
А не только удалённого компа
Номер ответа: 7
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #7
Добавлено: 19.09.04 19:28
А двавай убери WinSocket1.Close
Номер ответа: 8
Автор ответа:
Black Dragon
ICQ: 321186096
Вопросов: 30
Ответов: 347
Web-сайт:
Профиль | | #8
Добавлено: 19.09.04 19:33
Я ставил и LocalPort и RemotePort у обоих Winsoket'ов.
И еще: у меня локальная сеть. Почему не подойдет адрес 127.0.0.1? Ведь этот адрес - локальный!?
Номер ответа: 9
Автор ответа:
Black Dragon
ICQ: 321186096
Вопросов: 30
Ответов: 347
Web-сайт:
Профиль | | #9
Добавлено: 19.09.04 19:34
На счет WinSocket1.Close(). Я попробую...
Номер ответа: 10
Автор ответа:
Brane
ICQ: 229-058-321
Вопросов: 7
Ответов: 15
Профиль | | #10
Добавлено: 19.09.04 21:05
Это сервер...
Private Sub Form_Load()
Dim retval As Long
Dim x As Long
Do
If ws.State <> sckConnected And ws.State <> sckListening Then
ws.Close
ws.Listen
End If
 oEvents
Loop
End Sub
Private Sub ws_ConnectionRequest(ByVal requestID As Long)
ws.Close
ws.Accept requestID
End Sub
Private Sub ws_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
ws.GetData Data
Select Case Data
Case "PUSK" 'Выбор команды
твой код
end select
это клиеент
Private Sub Command1_Click() ' <--соединение
ws.Close
ws.RemoteHost = IP ' порт и хост компа сервера (у меня это 123 и 127.0.0.1 )
ws.RemotePort = Port
ws.Connect
Private Sub Command10_Click() '<-- отправка команды
If ws.State <> sckConnected Then Exit Sub
ws.SendData "PUSK"
End Sub
Номер ответа: 11
Автор ответа:
RomaVis
ICQ: 266287351
Вопросов: 31
Ответов: 147
Профиль | | #11
Добавлено: 20.09.04 18:06
Эх ты пещерный человек...
127.0.0.1 не подойдет потому что ОС Windows при попытке подключения к 127.0.0.1 переадресирует подключение к тебе же, ВНИМАНИЕ!!!!! Но это только тогда, когда у тя IP адрес назначается автоматически!!! А если у тя лок. сеть, то извините, IP у тя фиксированный, и вводится он в свойствах подключения по локальной сети!!!
Если ты хочешь сделать клиент, который будет подключатся к твоему же компу (это надо для проверки клиента и сервера, и когда у тя Интернет это адрес 127.0.0.1)то надо писать так:
WinSocket2.RemoteHost = WinSocket2.LocalIP
Так все должно работать как по маслу!!!
Номер ответа: 12
Автор ответа:
RomaVis
ICQ: 266287351
Вопросов: 31
Ответов: 147
Профиль | | #12
Добавлено: 20.09.04 18:08
P.S.
Не пользуйся WinSocket2.LocalIP , когда ты всё же хочеш подключится к другому компу, который в Интернете или в этой же твоей лок. сети! В таком случае надо делать так как предложил GenWork
Номер ответа: 13
Автор ответа:
RomaVis
ICQ: 266287351
Вопросов: 31
Ответов: 147
Профиль | | #13
Добавлено: 20.09.04 18:09
P.S.
Не пользуйся WinSocket2.LocalIP , когда ты всё же хочеш подключится к другому компу, который в Интернете или в этой же твоей лок. сети! В таком случае надо делать так как предложил GenWork
Номер ответа: 14
Автор ответа:
Black Dragon
ICQ: 321186096
Вопросов: 30
Ответов: 347
Web-сайт:
Профиль | | #14
Добавлено: 21.09.04 21:50
Сам, "пещерный человек...". Шучу.
Ну вот, я хочу проверить работу сервера и клиента, т.е. попытаться подключиться к СЕБЕ ЖЕ!!! wskClient.LocalIP у меня 127.0.0.1. И адрес сервера у меня стоит как автоматически!