powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Подключение с помощью TcpListener и TcpClient
10 сообщений из 10, страница 1 из 1
Подключение с помощью TcpListener и TcpClient
    #38333552
La France
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Ситуация следующая:
Есть сервер:
Код: 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.
        TcpClient client;

        public Server(int port)
        {
            listner = new TcpListener(new IPEndPoint(IPAddress.Any, port));
            listner.Start();

            list1 = new List<TcpClient>();//список клиентов

            backgroundWorker1 = new BackgroundWorker();
            backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
            backgroundWorker1.RunWorkerAsync();
        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            AddClient();
        }

        public void AddClient()
        {
            client = listner.AcceptTcpClient();
            list1.Add(client);
            backgroundWorker1 = new BackgroundWorker();
            backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
            backgroundWorker1.RunWorkerAsync();
        }


Есть клиент:
Код: c#
1.
2.
3.
4.
5.
6.
7.
        TcpClient client;

        public Client(string ipAddress, int port)
        {
            client = new TcpClient();
            client.Connect(new IPEndPoint(IPAddress.Parse(ipAddress), port));
        }



Создаем сервер - он начинает прослушивать указанный порт в специально отведенном для этого потоке чтобы программа не зависала. Запускаем клиент с адресом и портом сервера - он подключается. Сервер добавляет текущего клиента в список и ждет следующего клиента.

Проблема заключается в следующем: Когда я выполняю эту операцию на локальной машине, т.е. запускаю сервер и клиенты на одном компьютере, то все работает замечательно. Более того, когда я запускаю сервер на своей машине (из Томска) и кто-то запускает клиента на другой машине (из другого города - Омска), то все тоже отлично работает. Но, когда я запускаю сервер (из Томска), а кто-то запускает клиенты (из других городов - Жуков, Москва, Братислава), то тут уже ни хренашеньки не работает. На стороне клиента выскакивает одна из следующих ошибок: либо - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение , либо - Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера . Выяснить в чем же здесь проблема мой бубен не в силах. Правильность указанных ip и портов были проверены на сто раз.

Прошу помочь мне кто чем может. Если вдруг кто-то сталкивался с такой проблемой, пожалуйста, объясните как её решить?
...
Рейтинг: 0 / 0
Подключение с помощью TcpListener и TcpClient
    #38333706
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так вы telnet-ом проверьте доступность ip/port. Может порт закрыт файерволом
...
Рейтинг: 0 / 0
Подключение с помощью TcpListener и TcpClient
    #38334562
La France
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

Проверять, я так понимаю, надо со стороны клиента? Допустим я включил проверку в код. Проверка покажет, что по этому порту подключение установить нельзя. А дальше то что? Как клиента подключить к серверу, если сервер уже запущен и к нему уже подключены несколько других клиентов? Не перезапускать же сервер, выбирая порт пока не наткнешься на рабочий. Да и потом, что если например одна машина видит сервер запущенный с портом 8000, но не видит с портом 7373, а другая машина наоборот видит с портом 7373, но не видит с портом 8000? Как быть в этой ситуации?
...
Рейтинг: 0 / 0
Подключение с помощью TcpListener и TcpClient
    #38334887
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
La FranceПроверять, я так понимаю, надо со стороны клиента?
да

La FranceДопустим я включил проверку в код
нет

La FranceПроверка покажет, что по этому порту подключение установить нельзя. А дальше то что?
судьба такая. значит где-то по пути режется...

La FranceКак быть в этой ситуации?
Обычно во избежание проблем с файерволом работают с 80 портом


Можете опубликовать здесь адрес и порт, думаю, пользователи форума откликнутся и проверят доступность вашего сервиса из разных городов. И клиент можете прикрепить
...
Рейтинг: 0 / 0
Подключение с помощью TcpListener и TcpClient
    #38334990
La France
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79La FranceДопустим я включил проверку в код
нет

Почему нет, то? Я помещаю строки подключения в блок try - он, если подключение не проходит тоже самое, что и telnet говорит.

Arm79Обычно во избежание проблем с файерволом работают с 80 портом

С 80-м портом у меня сервер не запускается - говорит следующее: Сделана попытка доступа к сокету методом, запрещенным правами доступа .

Arm79Можете опубликовать здесь адрес и порт, думаю, пользователи форума откликнутся и проверят доступность вашего сервиса из разных городов. И клиент можете прикрепить

Прицеплю клиента: Chat .
В архиве установочный. Ставится как обычная программа. После установки на рабочем столе появится ярлык клиента с двумя человечками. Запускаем его и тыкаем Подключиться. Если подключится, то скажет об этом, не подключится - тоже. Адрес используется мой при строке по умолчанию: OwnerIP, порт будет использоваться тот что вбит: 8000. Сервер на моей машине будет запущен практически круглые сутки. Если у вас подключение пройдет успешно, то сервер, естественно, узнает об этом. Сама программа является чатом. Сообщения от всех клиентов сначала приходят на сервер, затем рассылаются остальным клиентам.

Удалить программу можно через панель управления.

Буду рад помощи.
...
Рейтинг: 0 / 0
Подключение с помощью TcpListener и TcpClient
    #38335100
Фотография mmnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
La FranceArm79пропущено...

нет

Почему нет, то? Я помещаю строки подключения в блок try - он, если подключение не проходит тоже самое, что и telnet говорит.

Arm79Обычно во избежание проблем с файерволом работают с 80 портом

С 80-м портом у меня сервер не запускается - говорит следующее: Сделана попытка доступа к сокету методом, запрещенным правами доступа .

Arm79Можете опубликовать здесь адрес и порт, думаю, пользователи форума откликнутся и проверят доступность вашего сервиса из разных городов. И клиент можете прикрепить

Прицеплю клиента: Chat .
В архиве установочный. Ставится как обычная программа. После установки на рабочем столе появится ярлык клиента с двумя человечками. Запускаем его и тыкаем Подключиться. Если подключится, то скажет об этом, не подключится - тоже. Адрес используется мой при строке по умолчанию: OwnerIP, порт будет использоваться тот что вбит: 8000. Сервер на моей машине будет запущен практически круглые сутки. Если у вас подключение пройдет успешно, то сервер, естественно, узнает об этом. Сама программа является чатом. Сообщения от всех клиентов сначала приходят на сервер, затем рассылаются остальным клиентам.

Удалить программу можно через панель управления.

Буду рад помощи.

Спб провайдер питерстар IP пингуется с портом проблема
...
Рейтинг: 0 / 0
Подключение с помощью TcpListener и TcpClient
    #38335443
La France
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mmnick,

Спасибо!
...
Рейтинг: 0 / 0
Подключение с помощью TcpListener и TcpClient
    #38337547
La France
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос остается открытым. Буду рад новым идеям.
...
Рейтинг: 0 / 0
Подключение с помощью TcpListener и TcpClient
    #38337979
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а какие идеи? Проверили. У меня так даже и ping не проходит (Подмосковье, Цифра1).
Советую обратиться к провайдеру с этим вопросом.

ЗЫ Сам чат написан ужасно :-) Почему не WCF?
...
Рейтинг: 0 / 0
Подключение с помощью TcpListener и TcpClient
    #38338305
La France
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79Ну а какие идеи? Проверили. У меня так даже и ping не проходит (Подмосковье, Цифра1).
Советую обратиться к провайдеру с этим вопросом.

Okay. Спасибо! Попробую что-нибудь придумать.

Arm79ЗЫ Сам чат написан ужасно :-) Почему не WCF?

Потому что я не чат пишу, а игру использующую TcpListener и TcpClient на WPF. Когда возникла подобная проблема в игре, я решил что будет проще и быстрее тестить соединение используя чат, который я по быстрой и накидал для этой цели, так что уж простите что этот чат по красоте и функциональности далек от скайпа)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Подключение с помощью TcpListener и TcpClient
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]