|
Подключение с помощью TcpListener и TcpClient
|
|||
---|---|---|---|
#18+
Здравствуйте! Ситуация следующая: Есть сервер: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Есть клиент: Код: c# 1. 2. 3. 4. 5. 6. 7.
Создаем сервер - он начинает прослушивать указанный порт в специально отведенном для этого потоке чтобы программа не зависала. Запускаем клиент с адресом и портом сервера - он подключается. Сервер добавляет текущего клиента в список и ждет следующего клиента. Проблема заключается в следующем: Когда я выполняю эту операцию на локальной машине, т.е. запускаю сервер и клиенты на одном компьютере, то все работает замечательно. Более того, когда я запускаю сервер на своей машине (из Томска) и кто-то запускает клиента на другой машине (из другого города - Омска), то все тоже отлично работает. Но, когда я запускаю сервер (из Томска), а кто-то запускает клиенты (из других городов - Жуков, Москва, Братислава), то тут уже ни хренашеньки не работает. На стороне клиента выскакивает одна из следующих ошибок: либо - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение , либо - Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера . Выяснить в чем же здесь проблема мой бубен не в силах. Правильность указанных ip и портов были проверены на сто раз. Прошу помочь мне кто чем может. Если вдруг кто-то сталкивался с такой проблемой, пожалуйста, объясните как её решить? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2013, 00:47 |
|
Подключение с помощью TcpListener и TcpClient
|
|||
---|---|---|---|
#18+
так вы telnet-ом проверьте доступность ip/port. Может порт закрыт файерволом ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2013, 10:21 |
|
Подключение с помощью TcpListener и TcpClient
|
|||
---|---|---|---|
#18+
Arm79, Проверять, я так понимаю, надо со стороны клиента? Допустим я включил проверку в код. Проверка покажет, что по этому порту подключение установить нельзя. А дальше то что? Как клиента подключить к серверу, если сервер уже запущен и к нему уже подключены несколько других клиентов? Не перезапускать же сервер, выбирая порт пока не наткнешься на рабочий. Да и потом, что если например одна машина видит сервер запущенный с портом 8000, но не видит с портом 7373, а другая машина наоборот видит с портом 7373, но не видит с портом 8000? Как быть в этой ситуации? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2013, 17:57 |
|
Подключение с помощью TcpListener и TcpClient
|
|||
---|---|---|---|
#18+
La FranceПроверять, я так понимаю, надо со стороны клиента? да La FranceДопустим я включил проверку в код нет La FranceПроверка покажет, что по этому порту подключение установить нельзя. А дальше то что? судьба такая. значит где-то по пути режется... La FranceКак быть в этой ситуации? Обычно во избежание проблем с файерволом работают с 80 портом Можете опубликовать здесь адрес и порт, думаю, пользователи форума откликнутся и проверят доступность вашего сервиса из разных городов. И клиент можете прикрепить ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2013, 23:25 |
|
Подключение с помощью TcpListener и TcpClient
|
|||
---|---|---|---|
#18+
Arm79La FranceДопустим я включил проверку в код нет Почему нет, то? Я помещаю строки подключения в блок try - он, если подключение не проходит тоже самое, что и telnet говорит. Arm79Обычно во избежание проблем с файерволом работают с 80 портом С 80-м портом у меня сервер не запускается - говорит следующее: Сделана попытка доступа к сокету методом, запрещенным правами доступа . Arm79Можете опубликовать здесь адрес и порт, думаю, пользователи форума откликнутся и проверят доступность вашего сервиса из разных городов. И клиент можете прикрепить Прицеплю клиента: Chat . В архиве установочный. Ставится как обычная программа. После установки на рабочем столе появится ярлык клиента с двумя человечками. Запускаем его и тыкаем Подключиться. Если подключится, то скажет об этом, не подключится - тоже. Адрес используется мой при строке по умолчанию: OwnerIP, порт будет использоваться тот что вбит: 8000. Сервер на моей машине будет запущен практически круглые сутки. Если у вас подключение пройдет успешно, то сервер, естественно, узнает об этом. Сама программа является чатом. Сообщения от всех клиентов сначала приходят на сервер, затем рассылаются остальным клиентам. Удалить программу можно через панель управления. Буду рад помощи. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 04:20 |
|
Подключение с помощью TcpListener и TcpClient
|
|||
---|---|---|---|
#18+
La FranceArm79пропущено... нет Почему нет, то? Я помещаю строки подключения в блок try - он, если подключение не проходит тоже самое, что и telnet говорит. Arm79Обычно во избежание проблем с файерволом работают с 80 портом С 80-м портом у меня сервер не запускается - говорит следующее: Сделана попытка доступа к сокету методом, запрещенным правами доступа . Arm79Можете опубликовать здесь адрес и порт, думаю, пользователи форума откликнутся и проверят доступность вашего сервиса из разных городов. И клиент можете прикрепить Прицеплю клиента: Chat . В архиве установочный. Ставится как обычная программа. После установки на рабочем столе появится ярлык клиента с двумя человечками. Запускаем его и тыкаем Подключиться. Если подключится, то скажет об этом, не подключится - тоже. Адрес используется мой при строке по умолчанию: OwnerIP, порт будет использоваться тот что вбит: 8000. Сервер на моей машине будет запущен практически круглые сутки. Если у вас подключение пройдет успешно, то сервер, естественно, узнает об этом. Сама программа является чатом. Сообщения от всех клиентов сначала приходят на сервер, затем рассылаются остальным клиентам. Удалить программу можно через панель управления. Буду рад помощи. Спб провайдер питерстар IP пингуется с портом проблема ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 09:55 |
|
Подключение с помощью TcpListener и TcpClient
|
|||
---|---|---|---|
#18+
mmnick, Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 13:03 |
|
Подключение с помощью TcpListener и TcpClient
|
|||
---|---|---|---|
#18+
Вопрос остается открытым. Буду рад новым идеям. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2013, 21:04 |
|
Подключение с помощью TcpListener и TcpClient
|
|||
---|---|---|---|
#18+
Ну а какие идеи? Проверили. У меня так даже и ping не проходит (Подмосковье, Цифра1). Советую обратиться к провайдеру с этим вопросом. ЗЫ Сам чат написан ужасно :-) Почему не WCF? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2013, 21:23 |
|
Подключение с помощью TcpListener и TcpClient
|
|||
---|---|---|---|
#18+
Arm79Ну а какие идеи? Проверили. У меня так даже и ping не проходит (Подмосковье, Цифра1). Советую обратиться к провайдеру с этим вопросом. Okay. Спасибо! Попробую что-нибудь придумать. Arm79ЗЫ Сам чат написан ужасно :-) Почему не WCF? Потому что я не чат пишу, а игру использующую TcpListener и TcpClient на WPF. Когда возникла подобная проблема в игре, я решил что будет проще и быстрее тестить соединение используя чат, который я по быстрой и накидал для этой цели, так что уж простите что этот чат по красоте и функциональности далек от скайпа) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2013, 18:36 |
|
|
start [/forum/topic.php?fid=20&msg=38333552&tid=1404335]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
109ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 216ms |
0 / 0 |