| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Сети > Соединение клиента и сервера через TCP в Интернете |
| Автор: rdnv 12.2.2009, 11:12 |
| Я написал клиент-сервер на winsock2 по протоколу TCP. Клиент соединяется с сервером, если я это делаю на одном компьютере (по локалке, по идее, тоже должен), и нормально работает. Но в Интернете они не устанавливают соединения (ошибка 10060 - timeout, но врядли в этом проблема), хотя IP адрес сервера клиент знает. Вопрос: почему такое может быть? Может нужно указывать особые флаги при подключении, или что-то еще? По-идее, по TCP связь в глобальной сети должна устанавливаться. Спасибо. |
| Автор: Олег2005 12.2.2009, 12:45 |
| Операционная система? Файрволл? Обычно он не пускает в сеть, если он есть..... |
| Автор: rdnv 12.2.2009, 14:07 |
| Windows XP. Файлволла нет. Только брэндмауэр Windows. |
| Автор: SenkraD 12.2.2009, 19:26 |
кто и кому что должен? IP-адресс сервера с машини клиента пингуется? IP-адресс сервера точно не динамичный? Код на всякий случай можно показать? |
| Автор: rdnv 12.2.2009, 19:35 |
| Клиент должен с сервером коннектиться. А если IP динамичный, что-то меняется? Ведь он даже если будет меняться при каждом новом подключении к Интернету, то он всегда будет известен. |
| Автор: rdnv 13.2.2009, 12:41 | ||
Сервер на обычном компьютере, который подключен к Интернету. А клиент тоже стоит на компе, который подключен к Интернету. И вот этот клиент не подключается к серверу, хотя если запустить сервер на компе клиента, то он подключится.
Каким таким серверам? Сервер, в моем случае, это обычная программа, которая открывает порт и его слушает. А вот компьютеру при подключении в Интернету, провайдер может давать разные IP... |
| Автор: Олег2005 13.2.2009, 13:30 | ||||
Обычная программа, которая открывает порт и слушает на нем сеть - называется сервером.
А что тут неизвестного? На шлюзе провайдера стоит сервер DHCP - только и всего. Только вот вопрос в том, что если сервер стоит на компе внутри сетки, и у него нет постоянного адреса, то вот тут и проблемы. Все сервера должны иметь ПОСТОЯННЫЙ адрес - если он работает внутри локалки, то постоянный серый адрес, а для Инета - постоянный реальный. Клиент - какой угодно - статический или динамический. |
| Автор: rdnv 13.2.2009, 13:36 | ||||
Я это и написал.
В каком смысле? Я про "неизвестное" ничего не говорил... А что делать, если сервер запущен на компьютере, но комп клиента не пингуется с тем, где сервер? |
| Автор: SVN74 13.2.2009, 23:41 |
| Читать, там все написано... Йон Снейдер Эффективное программирование TCP/IP ================================= "Совет 12. Не думайте, что программа, работающая в локальной сети, будет работать и в глобальной" |
| Автор: Олег2005 14.2.2009, 00:14 |
Если как вы говорите файрволл виндовский не причем, надо смотреть сниффером - уходит пинг с компа или нет |
| Автор: rdnv 14.2.2009, 12:30 |
| Спасибо за советы. |
| Автор: rdnv 15.2.2009, 14:51 |
| Вот какая штука... Я раньше запускал сервер на компе А и подключался с компа Б. Ничего не получалось. Теперь я сделал так: сервер запускаю на компе Б, а коннекчусь с компа А. То есть поменял их местами. Самое интересно, что так коннект происходит и нормально работает! Почему? Что-то не пускает клиент на компе Б? |
| Автор: Олег2005 15.2.2009, 21:53 |
| Вы все таки опишите вашу конфигурацию - где клиент(есть ли у него постоянный адрес, серый или реальный - или DHCP-адрес) Так же и о сервере - т.е. о компах А и Б - всю информацию. Не зная конфигурации вашей сети (подсети и тд) и местоположения компов - т.е. практически ничего не зная - нельзя вам что-то подсказать . |
| Автор: Comm 18.2.2009, 07:42 | ||||
Это значит что на компе Б есть выделенный внешний ай пи адрес ,а на компе А его нету. У меня вот у провайдера услуга внешний ай пи адрес стоит 150р в месяц,если её подключить то люди из вне смогут ко мне конектится(разумеется если я это разрешу) иначе ничего не получится.
|