Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .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 |
Все, все все. Друзья-коллеги, проблема полностью исчерпана и решена. Благодарю за помощь. ![]() |
Автор: Dobermann 26.12.2009, 14:12 | ||
Как это решил? |
Автор: IlyaIlin 26.12.2009, 14:38 |
Dobermann коллега сказал что заказчик фаервол возьмет на себя, а кроме фаервола все скрыто. Если писать Console приложение + WinAPI |user32.dll| метод ShowWindow, то приложение скрывается полностью, но есть глюк, в том что до того как вызовится метод ShowWindow чтоб скрыть консоль, она успевает себя засветить. поэтому разобрался с WinForms. |
Автор: Dobermann 26.12.2009, 14:42 |
т.е. winforms не засвечивается?! А ну хотя если сворачивать при загрузке... |
Автор: IlyaIlin 26.12.2009, 18:44 |
Dobermann я даже саму форму не создавал. Я ее удалил после создания WinForms проекта. Просто в метод Main поместил тот же код что и в console. Создал поток и в нем запустил TCPListener. Сама WinForms не засвечивается, пока не открыть порт. |