|
Вопрос # 2 216/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Долго мучался, искал в интернете, но так ничего и не нашол.
Я не могу принять данные, которые приходят на внешний IP (в своей программе)
У меня IDSL роутер.
Вопрос: Как мне их принять?
П.С. в моей программе пишет ошибку: Asynchronous socket error 10061
П.П.С. программа - это простейший пример. на самом деле планы более высоко моральные =)
... если выход в настройках модема - как работает тогда моя аська?
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
 |
Вопрос задал: Дима Каримов (статус: Посетитель)
Вопрос отправлен: 19 декабря 2008, 23:18
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 18; последнее сообщение — 26 декабря 2008, 16:02; участников в обсуждении: 4.
|
Вадим К (статус: Академик), 20 декабря 2008, 00:05 [#1]:
Ваша программа хочет быть сервером или клиентом? если сервером, то не получиться. А аська работать будет - она как клиент работает.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Вадим К (статус: Академик), 20 декабря 2008, 12:44 [#3]:
to Косолапов Дмитрий Юрьевич
Хорошо подумали о том, что написали? 10061 это никакой не порт. Это обычный код ошибки при работе с сокетами.
10061 это Connection Refused. То есть, сервер отказал. Это заосряет вопрос - так как сервер возможно существует, но подожём коментариев от вопрошающего.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Дима Каримов (статус: Посетитель), 20 декабря 2008, 23:59 [#4]:
Есть сервер. Есть клиент. Есть внешний IP.
Клиент пытается сконектится с сервером по внешнему IP.
При попытке это сделать вылетает ошибка 10061.
Как обойти ошибку мне доконца не известно, нужно использовать upnp функцию роутера.
|
|
Дима Каримов (статус: Посетитель), 21 декабря 2008, 00:01 [#5]:
П.С.
не так написал "нужно использовать upnp функцию роутера."
не мне нужно, а, как мне сообщили, можно попытатся так обойти это.
|
|
Дима Каримов (статус: Посетитель), 21 декабря 2008, 00:04 [#6]:
Я писал
"как работает тогда моя аська?"
Вадим К
Вы писали "А аська работать будет - она как клиент работает"
сорри, не подумал до конца =)
|
|
Вадим К (статус: Академик), 21 декабря 2008, 01:57 [#7]:
Нравиться, когда люди услышат умное слово, начинают использовать без надобности.
Проблема решается просто - многие нормальные роутеры имею функцию "переброски портов". Обычно даже интерфейс примитивный - надо указать порт на входе роутера, куда будут коннектиться клиенты, и порт и адрес компьютера за роутером (то есть Вашего), куда перенаправить данные. Обычно эти два порта совпадают. Обычно это называется Mapped port.
А UPnP - это технология, которая позволяет умным устройствам соединяться между собой и не просто соединяться, а ещё и настраивать друг друга. Например этот протокол любят использовать битторрент клиент, которому желательно иметь реальный IP.
Сам роутер в этом случае должен иметь только включенным эту службу. А настраивает сам компьютер - он должен иметь включенную службу.
Но настройка этого всего это уже не программирование - это уже системное администрирование.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Дима Каримов (статус: Посетитель), 21 декабря 2008, 20:34 [#8]:
Яссно. Я думал можно как-то программно открыть порт и получить данные, которые пришли, на этот порт, на внешний IP.
Раз программно нельзя, то буду действовать через уже открытые порты ( не важно ).
Спасибо за помощь)
|
|
Вадим К (статус: Академик), 21 декабря 2008, 21:33 [#9]:
Ну программно можно сделать, почему нельзя. Либо попросить службк UPnP открыть нужный порт, либо написать небольшую программу, которая сама добавит порт, когда ненадо - удалит. Программа может сделать это через веб интерфейс, а можно и через telnet протокол - некоторые роутеры поддерживают такую функцию.
Но если это единоразовая операция - то лучше просто сделать один раз это ручками.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Дима Каримов (статус: Посетитель), 21 декабря 2008, 22:54 [#10]:
наверно не лишним будет сказать что это за программа: это игра) и кто-то должен быть сервером, а кто-то клиентом ( по крайней мере так было задумано, и работало до тех пор пока я, со своим модемом не стал сервером)
Думаю в этом случае лучшим выходом будет программа. Чем кучка "умных" людей, ковыряющих компьютер.
Есть еще вариант - сделать оччень простенький сервер на РНР, разместить его где-нибудь, и пусть будет посредником... просто моему пытливому уму не хватает просто "альтернативного варианта" =) ... это я оставил на крайний случай ... (а если правду - я не знаю РНР))
... и есть еще одна проблема - я в знании протоколов (что с их помощью можно сделать) я не сильно силен.
Если можно, можете немного подробней описать как это сделать, или, в крайнем случае, сказать где это можно узнать (типо, хочешь узнать про динозавров открой википедию).
Заранее спасибо
|
|
Вадим К (статус: Академик), 22 декабря 2008, 00:11 [#11]:
Я думаю, что PHP тут не сильно поможет. Он хорошо работает для генерации страниц, но не для прокси.
К тому же, я подозреваю, что на сервер нужно ставить программу. А это может быть и невозможно. Хотя смотря какая игра.
Протоколы... Многие игры используют свой протокол, основанный на TCP/UDP и если это только не Ваша игра, то реверсинг протокола может быть увлекательным занятием. Но если программа хочет быть сервером, то вынести из за роутера практически нереально.
Проще перебросить в роутере порт. Да и правильнее с идеологической точки зрения.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Дима Каримов (статус: Посетитель), 22 декабря 2008, 15:48 [#12]:
"Проще перебросить в роутере порт"
А как это сделать. Полазить в настройках своего роутера, и открыть порт?
|
|
Вадим К (статус: Академик), 22 декабря 2008, 16:04 [#13]:
да. просто в разных роутеров это в разных местах. Но я написал, как это должно выглядеть приблизительно.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Дима Каримов (статус: Посетитель), 22 декабря 2008, 16:36 [#14]:
ясно, спасибо за помощь)
буду писать "руководство"
|
|
Косолапов Дмитрий Юрьевич (статус: 8-ой класс), 23 декабря 2008, 10:35 [#15]:
Собственно, это обычная практика - если человек "сидит за роутером" и хочет "поднять сервер", то соответствующий порт "пробрасывается" в роутере.
|
|
Пупкин В.В. (статус: 1-ый класс), 23 декабря 2008, 10:48 [#16]:
php однозначно не поможет для вашей задачи. игра предпологает активный обмен данными.
|
|
Дима Каримов (статус: Посетитель), 26 декабря 2008, 15:13 [#17]:
... в общем, программно это реализовать нельзя?
|
|
Вадим К (статус: Академик), 26 декабря 2008, 16:02 [#18]:
на php сервер для игры... универсальный вариант - нет. А для какой то специальной - вполне может быть. Сложно говорить о сферическом коне в вакууме.
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|