Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> простейшее взаимодействие программ (где ошибка) 
:(
    Опции темы
wotker
Дата 22.8.2006, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 18.7.2006
Где: Ростов-на-Дону

Репутация: 1
Всего: 5



Здравствуйте

Взял из книги след. код :

клиент:
Код

    private void button1_Click(object sender, System.EventArgs e)
        {
            UdpClient udpClient = new UdpClient();
            udpClient.Connect("localhost", 8080);
            Byte[] sendBytes = Encoding.ASCII.GetBytes("Hello World?");
            udpClient.Send(sendBytes, sendBytes.Length);
        }


Сервер:
Код

 public void serverThread()
        {
            UdpClient udpClient = new UdpClient(8080);
            
            while (true)
            {
                IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
                Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint);
                string returnData = Encoding.ASCII.GetString(receiveBytes);
                this.listBox1.Items.Add(
                RemoteIpEndPoint.Address.ToString() + ":" +
                returnData.ToString()
                );
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            Thread thdUDPServer = new Thread(new ThreadStart(serverThread));
            thdUDPServer.Start();
        }


В итоге серверное приложение толжно отображать в списке инфу. Проблема в том, что 2 приложения вообще не контактируют.  Можете подсказать где ошибка?
--------------------
ICQ ::            347306684e-mail ::         wotker[at]rambler[dot]ru 
PM MAIL ICQ   Вверх
mr.DUDA
Дата 22.8.2006, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 2
Всего: 232



Файрвол случаем не блокирует UDP на локалхост ?


--------------------
user posted image
PM MAIL WWW   Вверх
wotker
Дата 22.8.2006, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 18.7.2006
Где: Ростов-на-Дону

Репутация: 1
Всего: 5



да нет - все вроде отключено
--------------------
ICQ ::            347306684e-mail ::         wotker[at]rambler[dot]ru 
PM MAIL ICQ   Вверх
wotker
Дата 22.8.2006, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 18.7.2006
Где: Ростов-на-Дону

Репутация: 1
Всего: 5



 порт поменял на др. число - и все заработало. 
есть др. вопрос - в .net 2.0 код
Код

this.listBox1.Items.Add(
                RemoteIpEndPoint.Address.ToString() + ":" +
                returnData.ToString()
                );


не работает: пишется :
Код

Cross-thread operation not valid: Control 'listBox1' accessed from a thread other than the thread it was created on.


вообще потоки как то не правильно обрабатываются в >net 2.0 .  что можете сказать по этому поводу?
--------------------
ICQ ::            347306684e-mail ::         wotker[at]rambler[dot]ru 
PM MAIL ICQ   Вверх
mr.DUDA
Дата 23.8.2006, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 2
Всего: 232



Для доступа к контролам (таким как listBox1) из не-UI потока, нужно использовать Control.Invoke.

В .NET 1.1 исключения не генерировались, в отличие от 2.0, где от разработчика требуется более дисциплинированное обращение с GUI. Зато появились анонимные методы, так что приведённый код легко переделать в таком виде:

Код
this.listBox1.Invoke(new MethodInvoker(delegate()
{
       this.listBox1.Items.Add(
                 RemoteIpEndPoint.Address.ToString() + ":" +
                 returnData.ToString()
                );
}));



--------------------
user posted image
PM MAIL WWW   Вверх
wotker
Дата 23.8.2006, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 18.7.2006
Где: Ростов-на-Дону

Репутация: 1
Всего: 5



to mr.DUDA  - Спасибо. 
У меня еще такой вопрос: как отлаживать такие программы которые работают с сетью? можно ли отследить ошибку например почему данные не приходят на др. компьютер и т.д.?

--------------------
ICQ ::            347306684e-mail ::         wotker[at]rambler[dot]ru 
PM MAIL ICQ   Вверх
mr.DUDA
Дата 23.8.2006, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 2
Всего: 232



Цитата(wotker @  23.8.2006,  11:08 Найти цитируемый пост)
У меня еще такой вопрос: как отлаживать такие программы которые работают с сетью? можно ли отследить ошибку например почему данные не приходят на др. компьютер и т.д.?

Так же как и любые другие программы - стартовать в отладчике либо аттачиться к выполняющемуся процессу. Если нужна отладка и клиента и сервера - нужно отлаживать на обеих машинах одновременно (на каждой должна стоять студия, либо разрешено Remote Debugging, хотя насчёт последнего я имею мало информации).


--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0488 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.