Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Коллеги нужна помощь по сокетам


Автор: IlyaIlin 25.12.2009, 16:23
Здравствуйте. Дело в том, что один и тот же код работает совернешнно по разному в console работает корректно, а в win работает тоже корректно, но с необольшим отличием. 
Задача: нужно чтобы был открыт порт у приложения всегда, причем внешний порт со внешним IP адресом. 
Решение:т.к. внешний IP адрес узнать сложно и не всегда он доступен, а иногда он меняеятся приходится создавать объект TCPListener (port) (msdn рекомендует так не делать и указывать IP TCPListener(IPAdderess.Parse(""), port) ), если создать экземпляр класса только указав порт, то будут прослушиватся и локальные соединения (localhost:[port]) и внешние ([externalIP]:[port]) - это правильно. 
Проблема: А если запустить этот же код в WinForms, - только локальные. 
Вопрос: Как можно исправить данную ситуацию? 

Заранее, ОГРОМНОЕ ВАМ СПАСИБО!

Автор: Heinzz 25.12.2009, 17:48
не уверен, но возможно брэндмаузер блокирует, у меня так было.

Автор: IlyaIlin 25.12.2009, 18:17
Heinzz, а почему консоль не блокирует? 

Автор: Heinzz 25.12.2009, 19:49
а может и не в этом дело. Просто зайдите в брандмаузер и разрешите вашему процессу все. Попытка не пытка

Автор: IlyaIlin 25.12.2009, 20:13
Спасибо, вам. Программа начала корректно работать. Н есть условие, программа должна работать на компьюетере сотрудника полностью скрыто. Может вы знаете как можно это решить?

Автор: IlyaIlin 25.12.2009, 21:38
Все, все все. Друзья-коллеги, проблема полностью исчерпана и решена. Благодарю за помощь.   smile 

Автор: Dobermann 26.12.2009, 14:12
Цитата(IlyaIlin @  25.12.2009,  20:13 Найти цитируемый пост)
Н есть условие, программа должна работать на компьюетере сотрудника полностью скрыто.

Как это решил?

Автор: IlyaIlin 26.12.2009, 14:38
Dobermann коллега сказал что заказчик фаервол возьмет на себя, а кроме фаервола все скрыто. Если писать Console приложение + WinAPI |user32.dll| метод ShowWindow, то приложение скрывается полностью, но есть глюк, в том что до того как вызовится метод ShowWindow чтоб скрыть консоль, она успевает себя засветить. поэтому разобрался с WinForms.

Автор: Dobermann 26.12.2009, 14:42
Цитата(IlyaIlin @  26.12.2009,  14:38 Найти цитируемый пост)
поэтому разобрался с WinForms. 

т.е. winforms не засвечивается?! А ну хотя если сворачивать при загрузке...

Автор: IlyaIlin 26.12.2009, 18:44
Dobermann я даже саму форму не создавал. Я ее удалил после создания WinForms проекта. Просто в метод Main поместил тот же код что и в console. Создал поток и в нем запустил TCPListener. Сама WinForms не засвечивается, пока не открыть порт.

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