Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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
Цитата(rdnv @  12.2.2009,  11:12 Найти цитируемый пост)
по локалке, по идее, тоже должен)

кто и кому что должен?

IP-адресс сервера с машини клиента пингуется? IP-адресс сервера точно не динамичный?
Код на всякий случай можно показать?

Автор: rdnv 12.2.2009, 19:35
Клиент должен с сервером коннектиться.

А если IP динамичный, что-то меняется? Ведь он даже если будет меняться при каждом новом подключении к Интернету, то он всегда будет известен.

Автор: Олег2005 12.2.2009, 20:14
Цитата(rdnv @  12.2.2009,  18:35 Найти цитируемый пост)
А если IP динамичный, что-то меняется? Ведь он даже если будет меняться при каждом новом подключении к Интернету, то он всегда будет известен. 

Странно.
IP-сервера должен быть постоянный. Равно как и порт.
Серверам динамические адреса НЕ ВЫДАЮТСЯ.
Где расположен ваш сервер? В той же локалке или вне ее?
 
Цитата

Только брэндмауэр Windows.
 
Он тоже может запрещать выход клиента.  

Автор: rdnv 13.2.2009, 12:41
Сервер на обычном компьютере, который подключен к Интернету. А клиент тоже стоит на компе, который подключен к Интернету. И вот этот клиент не подключается к серверу, хотя если запустить сервер на компе клиента, то он подключится.

Цитата

Серверам динамические адреса НЕ ВЫДАЮТСЯ.

Каким таким серверам? Сервер, в моем случае, это обычная программа, которая открывает порт и его слушает. А вот компьютеру при подключении в Интернету, провайдер может давать разные IP...

Автор: Олег2005 13.2.2009, 13:30
Цитата(rdnv @  13.2.2009,  11:41 Найти цитируемый пост)
Каким таким серверам? Сервер, в моем случае, это обычная программа, которая открывает порт и его слушает. 

Обычная программа, которая открывает порт и слушает на нем сеть - называется сервером. smile 

Цитата

А вот компьютеру при подключении в Интернету, провайдер может давать разные IP... 

А что тут неизвестного?
На шлюзе провайдера стоит сервер DHCP - только и всего.
Только вот вопрос в том, что если сервер стоит на компе внутри сетки, и у него нет постоянного адреса, то вот тут и проблемы.
Все сервера должны иметь ПОСТОЯННЫЙ адрес - если он работает внутри локалки, то постоянный серый адрес, а для Инета - постоянный реальный.
Клиент - какой угодно - статический или динамический.

Автор: rdnv 13.2.2009, 13:36
Цитата

Обычная программа, котрая открывает порт и слушает на нем сеть - называется сервером.

Я это и написал.

Цитата

А что тут неизвестного?

В каком смысле? Я про "неизвестное" ничего не говорил...

А что делать, если сервер запущен на компьютере, но комп клиента не пингуется с тем, где сервер?

Автор: SVN74 13.2.2009, 23:41
Читать, там все написано...

Йон Снейдер
Эффективное программирование TCP/IP
=================================
"Совет 12. Не думайте, что программа, работающая в локальной сети, будет работать и в глобальной"

Автор: Олег2005 14.2.2009, 00:14
Цитата(rdnv @  13.2.2009,  12:36 Найти цитируемый пост)
но комп клиента не пингуется с тем, где сервер? 

Если как вы говорите файрволл виндовский не причем, надо смотреть сниффером - уходит пинг с компа или нет

Автор: 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р в месяц,если её подключить то люди из вне смогут ко мне конектится(разумеется если я это разрешу) иначе ничего не получится.


Цитата

Олег2005 
Чуть выше описал тоже самое но более квалифицированным языком)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)