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

Ситуация следующая:
Есть сервер:
Код: 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
17.07.2013, 10:21
    #38333706
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение с помощью TcpListener и TcpClient
так вы telnet-ом проверьте доступность ip/port. Может порт закрыт файерволом
...
Рейтинг: 0 / 0
17.07.2013, 17:57
    #38334562
La France
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение с помощью TcpListener и TcpClient
Arm79,

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

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

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

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


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

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

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

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

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

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

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

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

нет

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

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

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

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

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

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

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

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

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

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

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

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

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


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