Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
45 / 44 / 7
Регистрация: 15.10.2008
Сообщений: 320
1

Клиент не подключаеться к серверу

09.04.2009, 16:19. Показов 1902. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
здравствуйте.
написал приложение клиент - сервер. на одном компе нормально работает вроде.... на когда пробую отсылать сообщения в сети (по сети) приложение на удаленном компе не подключаеться к серверу. Как должен быть написан сервер или запужен, чтобы все приложения к нему подключались и затем могли обмениваться сообщениями
Заранее спасибо.
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2009, 16:19
Ответы с готовыми решениями:

Клиент подключается к серверу, List хранит подключенные соединения. Почему они зациклены
Есть Главный и ClientConnection класс. public List<ClientConnection> Clients = new...

Клиент не подключается к серверу
Здравствуйте! Извините пожалуйста если что не так напишу. Есть сервер с базой данных, есть...

Не подключается клиент к серверу
Чую, что ошибка тупая, но только начал разбираться с этим всем) Клиент: var...

Клиент-серверное приложение не подключается к серверу
По примеру, сделал я сервер и клиент, которые с помощью Socket подключаются друг с другом....

5
20 / 20 / 0
Регистрация: 04.03.2009
Сообщений: 56
09.04.2009, 17:17 2
1) Приёмник запускается и ждёт сигнала:

C#
1
2
3
4
5
6
7
8
9
10
11
   IPAddress ip = IPAddress.Parse("127.0.0.1");//ip того, кого слушаем
                Int32 port = 2112;//порт того, кого слушаем
                TcpListener tcpListener = new TcpListener(ip, port);
                tcpListener.Start();
                //блокирующий метод ожидания приёма данных из сети
                TcpClient tcpClient = tcpListener.AcceptTcpClient(); 
                NetworkStream ns = tcpClient.GetStream();
                StreamReader sr = new StreamReader(ns);
                string s = st.ReadToEnd();
                tcpClient.Close();
                tcpListener.Stop();
2) Источник посылает сигнал:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            IPAddress ip = IPAddress.Parse("127.0.0.1");//ip того, кого слушаем
            Int32 port = 2112;//порт того, кого слушаем
            TcpClient tcpClient = new TcpClient();
            //подключаемся к приёмнику, и, 
            //если он готов к приёму (т.е. на приёмнике      
            //уже сработал метод tcpListener.Start()),
            //посылаем сообщение
            tcpClient.Connect(ip, port); 
            NetworkStream ns = tcpClient.GetStream();
            s = "Hellow World!";
            int data;
            for (int i = 0; i < s.Length; i++)
            {
                data = s[i];
                ns.WriteByte((byte)data);
            }
            tcpClient.Close();
есть ещё такой полезный метод - Penging, который запускают перед AcceptTcpClient. Он проверяет: есть входящие данные или нет.

Ответил на вопрос или нет?

Добавлено через 6 минут 18 секунд
Пардон, там в пункте 2, конечно, должно быть что-то вроде

C#
1
2
                IPAddress ip = IPAddress.Parse("127.0.0.2");//ip того, кому посылаем
                Int32 port = 3000;//порт того, кому посылаем
1
45 / 44 / 7
Регистрация: 15.10.2008
Сообщений: 320
09.04.2009, 17:26  [ТС] 3
lesovick, а вот сморти.. в моем случае.. клиент проверяет сам какой IP у машины
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const int nPortListen = 399;
 
            // Определяем IP нашей машины
            IPAddress [] aryLocalAddr = null;
            String strHostName = "";
            try
            {
                strHostName = Dns.GetHostName();
                IPHostEntry ipEntry = Dns.GetHostByName( strHostName );
                aryLocalAddr = ipEntry.AddressList;
            }
            catch( Exception ex )
            {
                Console.WriteLine("Ошибка, пробующая получить локальный адрес {0} ", ex.Message);
            }
 
            // Проверьте, мы получили адрес IP. Скажите пользователю, если мы сделали
            if( aryLocalAddr == null || aryLocalAddr.Length < 1 )
            {
                Console.WriteLine( "невозможно получить локалный адрес" );
                return;
            }
            Console.WriteLine( "Listening on (поиск) : [{0}] {1}:{2}", strHostName, aryLocalAddr[0], nPortListen );
или это не правильно?
0
20 / 20 / 0
Регистрация: 04.03.2009
Сообщений: 56
09.04.2009, 18:03 4
В том коде, что ты написал меня ничего не смущает, кроме номера порта. Я бы не стал брать порт с номером меньше 1024 - они могут быть уже зарезервированы для так называемых служб общего назначения (например протоколы HTTP и SMTP используют порты 80 и 25 соответственно). Может быть глюки у тебя как раз из-за этого...
0
Комбайнёр
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
09.04.2009, 18:15 5
Согласен, бери больше 2000
1
20 / 20 / 0
Регистрация: 04.03.2009
Сообщений: 56
09.04.2009, 19:45 6
Нет, всё-таки я был прав в своих примерах. Первые 2 строчки и в приёмнике и в источнике д.б. одинаковыми, ну, скажем

C#
1
2
            IPAddress ip = IPAddress.Parse("127.0.0.1");
            Int32 port = 2112;
Для приёмника это его собственные ip и порт, которые от слушает, и на которые должен получить сообщение.

Для источника это ip и порт, удалённого хоста на который он отправляет сообщение. Т.е. это ip и порт которые слушает наш приёмник!
0
09.04.2009, 19:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2009, 19:45
Помогаю со студенческими работами здесь

Какой должен быть ip у сервера чтобы клиент мог отправлять серверу сообщение?
Есть Клиент: // Получение имени компьютера. String host =...

Как сделать, чтобы клиент посылал серверу запрос вида: <адрес точки входа>?function=...terminal=<номер терминала> ?
Надо чтобы клиент серверу отправил свой номер идентификационный (при помощи HTTPS), а сервер,...

При подключении клиента к серверу, подключается еще один клиент (фантом) завязанный на этого же клиента
Проблема появляется раз через раз с первого подключения клиентов, но после третьего и далее -...

Сцена зависает при запуске TCP-клиента, когда он подключен к TCP - серверу, при этом TCP-клиент полностью функционирует
Проблема описана в заголовке, и хотелось бы услышать ваше мнение, о том как можно решить проблему....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru