Вопрос по Winsock

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Aleqs
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 12.12.2004 (Вс) 15:58

Вопрос по Winsock

Сообщение Aleqs » 12.12.2004 (Вс) 16:00

У меня в программе используется два Winsock'a, один выполняет одни дествия, другой другие. Фигня в том, что в локальной сети программы соединяются, все работает отлично, а в интернете почему то не хотят. В чем проблема? :?:

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 12.12.2004 (Вс) 16:06

В твоей программе.


Код-то покажи, телепатов здесь нет.
Изображение

Aleqs
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 12.12.2004 (Вс) 15:58

Код

Сообщение Aleqs » 12.12.2004 (Вс) 16:42

Ну вот код, тут ни чего вроде такого подозрительного нет

--Клиент--

Private Sub Form_Load()
ws1.Connect "IP Адрес", 1002
ws2.Connect "IP Адрес", 1005
ENd SUb

Private Sub ws1_DataArrival(ByVal bytesTotal As Long)
Думаю здесь неважно что происходит, так как до этого момента не доходит
End Sub

Private Sub ws2_DataArrival(ByVal bytesTotal As Long)
И тут тоже
End Sub

Private Sub FormQueryUnload(Cancel As Integer, UnloadMode As Integer)
ws1.Close
ws2.Close
End Sub

--Сервер--

Private Sub Form_Load()
ws1.LocalPort = 1002
ws1.Listen
ws2.LocalPort = 1005
ws2.Listen
ENd Sub

Private Sub ws1_ConnectionRequest(ByVal requestID As Long)
ws1.Close
ws1.Accept requestID
End Sub

Private Sub ws2_ConnectionRequest(ByVal requestID As Long)
ws2.Close
ws2.Accept requestID
End Sub

Private Sub FormQueryUnload(Cancel As Integer, UnloadMode As Integer)
ws1.Close
ws2.Close
End Sub

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 12.12.2004 (Вс) 16:59

Если айпишники правильные задаёшь, то всё должно работать... Может, ты пытаешься юзать в интернете внутренние адреса (192.168.*.*)?
Изображение

Aleqs
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 12.12.2004 (Вс) 15:58

ip

Сообщение Aleqs » 12.12.2004 (Вс) 17:38

Да нет, айпишник сервер автоматом назначает

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 12.12.2004 (Вс) 18:09

:roll: это как - автоматом? А как он его узнаёт?
Покажи тогда код, как "автоматом" назначается айпишник ;-)
Изображение

Aleqs
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 12.12.2004 (Вс) 15:58

Сообщение Aleqs » 12.12.2004 (Вс) 18:36

Я что то вообще запутался :? . Когда подключаешся к интернету, то сервер тебе сразу назначает айпишник автоматически, а потом этот ip я по sms посылаю тому, с кем пытаюсь подключиться (сам в ожидании). Тот его вводит, и.. и все... и нифига.
Я тут кстати одну особенность нашел: когда мы с другом коннектимся по TCP/IP напрямую через модем, прога клиент коннектится к проге сервер только тогда, когда прога сервер запущена на компе, который вставал в ожидание (сервер удаленного доступа), а наоборот нифига. Поэтому в инете они кажись и не работают, но почему?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 12.12.2004 (Вс) 19:09

Ты уверен, что вам провайдер раздаёт не внутренние айпишники? Первые два байта выданного айпишника покажи плз :-)
Изображение

Aleqs
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 12.12.2004 (Вс) 15:58

Сообщение Aleqs » 12.12.2004 (Вс) 19:36

Короче, вот весь йапи: 213.158.21.129, все время меняется только четвертая часть

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 12.12.2004 (Вс) 19:53

Айпи нормальный; не знаю, в чём дело. :roll:
Может, у тебя на машине несколько сетевух?
Изображение

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 12.12.2004 (Вс) 20:47

Хм... Ну, давайте посмотрим, что это за провайдер хитрый такой:
RIPN Whois писал(а):inetnum: 213.158.16.0 - 213.158.31.255
...
route: 213.158.16.0/20
descr: Branch "Artelecom Arkhangelsk region"
descr: OJSC "North-West Telecom"
descr: Arkhangelsk, Russia

Таки шо мы видим? Пул динамических адресов размером 255*16=4080 штук. А теперь, внимание, вопрос: если у тебя, т.е. у сервера, динамический IP-адрес, то как твой клиент узнает, на каком именно из этих адресов его ждут на указанных тобой в коде портах (1002, 1005)? Это ему весь пул твоего провайдера перебирать придется, причем я более чем уверен, что примерно к середине перебора его просто забанят нахрен за DoS или Port Scan. Ну а синхронизация "IP over SMS" - да, это конечно сильно, только для реального приложения как-то... несерьезно :) . Неужели той же аськой сложнее воспользоваться? Короче, вопрос согласования адресов должен решаться не так. Сейчас это для тебя не проблема, но на будущее учти. Это первое.

Далее, по моему опыту большинство провов закрывают все порты, кроме наиболее общеупотребимых - 80, 21, 25/110, 443, 1721, 121, ну и может еще с десяток наберется. Соотв-но, лично я не уверен, что до тебя хоть кто-то достучаться сможет по используемым тобой портам - твой пров просто не пропустит к тебе ни один пакет. Юзай что-нить распространенное, например тот же VPN-порт (TCP 1721), или HTTPS (TCP 443) - наверняка никто слова не скажет...

Как проверить, кто виноват в проблеме - твоя прога или твой провайдер? Очень просто: запускаешь на сервере сервер, а на клиенте в командной строке - вот это:
Код: Выделить всё
telnet 213.158.21.129 1002

Если сервер запущен и ждет, то получение ошибки означает закрытость порта 1002 (в данном примере) на магистрали, т.е. у прова. Подбирай открытый адрес.

DragonTriste
Обычный пользователь
Обычный пользователь
 
Сообщения: 76
Зарегистрирован: 15.08.2004 (Вс) 10:46

Сообщение DragonTriste » 12.12.2004 (Вс) 22:18

ты там упоминал локальную сеть и модем... может просто не на том интерфейсе порты открываешь ?


Ennor писал(а):...Ну а синхронизация "IP over SMS" - да, это конечно сильно....

:) :lol:
dragons on line...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 12.12.2004 (Вс) 23:45

DragonTriste писал(а):
Ennor писал(а):...Ну а синхронизация "IP over SMS" - да, это конечно сильно....

:) :lol:

Неа, не круто. Вот "IP over ACTP" (когда IP-пакеты переносят почтовые голуби) - это круто ;-)

(см. http://www.faqs.org/rfcs/rfc1149.html )
Изображение

DragonTriste
Обычный пользователь
Обычный пользователь
 
Сообщения: 76
Зарегистрирован: 15.08.2004 (Вс) 10:46

Сообщение DragonTriste » 13.12.2004 (Пн) 0:40

рфк 1149 ???
это что является офицальным протоколом ??? :shock:
dragons on line...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.12.2004 (Пн) 0:57

DragonTriste, на дату издания посмотри внимательнее ;-)
Изображение

DragonTriste
Обычный пользователь
Обычный пользователь
 
Сообщения: 76
Зарегистрирован: 15.08.2004 (Вс) 10:46

Сообщение DragonTriste » 13.12.2004 (Пн) 2:09

:lol:
на дату я и не обратил внимания... :oops:
dragons on line...


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

    TopList  
cron