Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > TCP/IP socket c# |
Автор: herade 1.11.2010, 23:24 |
доброе время суток! есть простой проект, клиент сервер на основе tcp/ip сокетов. проект стабильно работает на двух машинах одного провайдера. проблема: если поставить сервер на другую машину(не мой провайдер), то клиент с моей машины не может подключиться, хотя на машине куда я пытаюсь подключиться порт не занят и при просмотре состояний tcp портов, сервер открывает нужный порт и слушает. айпи обеих машин не пингуются ни с внешних серверов, ни с каждой машины по отдельности (то есть моя машине не видит вторую машину, и соответственно наоборот). однако если на вторую машину поставить клиент, а на моей запустить сервер, то все работает. то есть получается работа в одну сторону что ли, если так выразиться можно. понимаю что вопрос немного не по теме, но все же если кто то сталкивался с этим прошу помочь. при необходимости предоставлю код, но думаю не в нем дело, потому что в одну "сторону" проект работает. да и там самая примитивная реализация. заранее благодарен сорри за ![]() |
Автор: neic 2.11.2010, 00:12 |
1) когда ты даешь сервер другому челу, меняешь данные на клиенте (куда подключатся)? 2) просто у твоего друга может быть динамический IP поэтому и не подключится. |
Автор: herade 2.11.2010, 00:40 |
ну порт остается тот же, он в коде указан, а в клиенте вводится айпи. насчет динамических айпи скорее всего это так, ибо у меня VPN вообще, и каждую сессию айпи меняется, у друга не впн, но тоже каждую сессию меняется айпи. ну так а разница, если есть адрес машины, я могу отправить пакет на этот адрес. другие же приложения работают на основе tcp соков.(ну квип ася браузеры итп ![]() к тому же если динамический айпи и у меня и у друга, то почему он может подключиться а я нет? конечно же тестировалось на выключенном полностью КИС'е и фаерволе. вопрос остается( |
Автор: mrbrooks 2.11.2010, 09:51 |
herade, прокси у вас там нигде не гуляет? |
Автор: neic 2.11.2010, 11:50 |
herade Все перечисленные проги имеют серваки с "белым" IP. Т.е. у них всегда статический IP адрес. Скорее всего проблема в этом. |
Автор: herade 2.11.2010, 17:35 |
neic, ну мой айпи не серый, по диапазону не подходит, но фишка в том, и что он мог подключиться ко мне, а я не могу к нему, тут понятно. mrbrooks, прокси нету, но при выделении другу серого айпи понятно же что он сидит за NAT'ом провайдера и тут к нему никак не подключиться. но иногда машине друга провайдер выделяет "белый" айпи, не понимаю почему, но по определению статический\динамический айпи может быть как серым так и белым, понятно что провайдер выделяет "серые" адреса что бы избежать аттак и любых внешних подключений, но когда пробовал подключиться к машине с белым айпи, и все равно эффект тот же, ко мне могут подключиться, я не могу. айпи по диапазонам серого не подходит, проверял, может еще какие то нюансы есть. опять же не пингуется машина с "белым" айпи, ни с сервов внешних, ни с моей машины, и трэйсерт обрывается на маршрутизаторе провайдера друга, он работает как фаервол( Вики "При использовании NAT пользователь с адресом локальной сети может подключаться к компьютерам в сети Интернет, но компьютеры из Интернета не могут подключаться к этим пользователям без дополнительной настройки («проброса порта»)." это понятно все, но в почему когда на машине был белый айпи и все равно я не мог подключиться ну и возникает новый вопросец, можно ли как то реализовать port forwarding или как в вики написано "проброс порта":smile на машине через c#? по мойму это же конкретная настройка маршрутизатора?? должны же быть какие то решения) а то получается реализовать клиент-сервер двух машин с разными провайдерами почти нереально, ведь почти все провайдеры используют сходные принципы и методы. P.S client error: System.Net.Sockets сделана попытка выполнить операцию на сокете при отключенной сети IP:port подсвечивается есессно на строчке socket.connect() |
Автор: neic 3.11.2010, 01:02 |
herade Проверить можно просто. Ищите сайты на которых предлагают виртуальные сервера. Просите предоставить (или ищите там где...) сервер на тест. Заливаешь туда прогу и пытаешься проверить. Если все ОК, то дело в Ваших IP и провайдерах в частности. |