Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 216

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Долго мучался, искал в интернете, но так ничего и не нашол.
Я не могу принять данные, которые приходят на внешний IP (в своей программе)
У меня IDSL роутер.
Вопрос: Как мне их принять?

П.С. в моей программе пишет ошибку: Asynchronous socket error 10061
П.П.С. программа - это простейший пример. на самом деле планы более высоко моральные =)

... если выход в настройках модема - как работает тогда моя аська?

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

Приложение:
  1.  
  2.  
  3.  
  4.  


Дима Каримов Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Дима Каримов (статус: Посетитель)
Вопрос отправлен: 19 декабря 2008, 23:18
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 18; последнее сообщение — 26 декабря 2008, 16:02; участников в обсуждении: 4.
Вадим К

Вадим К (статус: Академик), 20 декабря 2008, 00:05 [#1]:

Ваша программа хочет быть сервером или клиентом? если сервером, то не получиться. А аська работать будет - она как клиент работает.
Галочка "подтверждения прочтения" - вселенское зло.
Косолапов Дмитрий Юрьевич

Косолапов Дмитрий Юрьевич (статус: 8-ой класс), 20 декабря 2008, 11:07 [#2]:

А в роутере порт 10061 на ваш компьютер "прокинут"?
Вадим К

Вадим К (статус: Академик), 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 сервер для игры... универсальный вариант - нет. А для какой то специальной - вполне может быть. Сложно говорить о сферическом коне в вакууме.
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:50
Выполнено за 0.04 сек.