1 / 1 / 2
Регистрация: 28.08.2014
Сообщений: 68
|
||||||
1 | ||||||
Проверьте правильность кода сетевого приложения и исправьте ошибки, если таковые имеются28.08.2014, 14:00. Показов 1520. Ответов 7
Метки нет (Все метки)
Доброго времени.
В общем начал программировать на C# ровно 2 часа назад . Уровень моих знаний естественно равен нулю. Но тем не менее поковырявшись в примерах я выполнил необходимую мне задачу: Есть форма на ней кнопка, по нажатию кнопки на определённый IP и на определённый порт (внутри сети) передаётся сообщение "Hello". На другом конце слушатель принимает сообщение и реагирует на него (слушатель - программа стороннего разработчика). В общем у меня всё сработало. Но потом отладчик выдал ошибку. Насколько я понял ошибка связана со структурой программы, где-то что-то залипло и переполнилось. Просьба проста, проверьте пожалуйста и подкорректируйте всё что я должен вынести за "событие кнопки". Заранее благодарен.
0
|
28.08.2014, 14:00 | |
Ответы с готовыми решениями:
7
Первый class Array. Проверить и указать на ошибки, если таковые имеются Удалить из списка L все элементы E, если таковые имеются Удалить из списка L все элементы Е, если таковые имеются Найти сокращенную, минимальную, тупиковую, КН форму F, если таковые имеются |
28.08.2014, 14:29 | 2 | |||||
Lazebin,
StreamReader тоже нужно закрывать, или оборачивать в using
1
|
foo();
|
||||||
28.08.2014, 14:30 | 3 | |||||
Lazebin, сразу признаюсь, в TCP я НЕ силен. Заметил, что eClient используется в программе неоднократно, а Вы его закрываете сразу после первого использования (36 строка). readerStream вообще не используется. А writerStream вы как раз не закрываете, хоть и создаете новый каждый раз. Если я все правильно понял, Вам нужно строку 30 убрать, а 36 заменить на
1
|
1 / 1 / 2
Регистрация: 28.08.2014
Сообщений: 68
|
|
28.08.2014, 16:36 [ТС] | 4 |
Спасибо, господа, сейчас попробую.
Добавлено через 1 час 35 минут В общем всё плохо, я избавился от readerStream совсем, а writerStreem заключил в using, попытался использовать writerStream.Close(), на что он вообще руганулся. В общем при первом нажатии на кнопку - всё пучком при повторном во что получается:
0
|
122 / 120 / 47
Регистрация: 14.09.2012
Сообщений: 276
|
||||||
28.08.2014, 21:14 | 6 | |||||
Сообщение было отмечено Lazebin как решение
Решение
попробуйте так
1
|
1 / 1 / 2
Регистрация: 28.08.2014
Сообщений: 68
|
|
30.08.2014, 10:48 [ТС] | 7 |
ablai96, спасибо большое, всё заработало, отклик изумительный, теперь сижу разбираюсь - что к чему.
И вообще, всем спасибо, ребята, кто проявил участие! Добавлено через 26 минут Теперь если можно вопрос не по теме, хотя как знать... Насколько я понял: StreamReader используется для получения ответа от сервера/клиента, нужен ли он вообще в данном коде? (ну по идее он мне потом понадобится но не именно в реакции по кнопке) И второй вопрос: Опять же, судя по коду, соединение открывается прямо в момент нажатия кнопки, выполняется отправка сообщения и, далее соединение закрывается. Если в будущем я предполагаю написать интерфейс с набором кнопок разного назначения, которые будут отсылать различные сообщения на один и тот же адрес и один и тот же порт - то, целесообразно ли постоянное открытие и закрытие соединения, экономит ли подобное действие процессорный и сетевой "ресурс"? Либо, было бы логичнее не закрывать соединение до закрытия формы и уменьшит ли это время отклика? Ну и третий вопрос: серверу абсолютно всё равно, в каком формате я отсылаю сообщение, по сути, на данном этапе я отсылаю текстовые, которые преобразую в "byte", и на основе полученного сообщения сервер выполняет определённую программу. Мне кажется, я делаю лишние "телодвижения". Оно конечно удобнее видеть команду в коде которая доберётся до сервера, а не просто "byte", но опять же насколько это целесообразно для оптимизации кода? Фух... других загрузил и сам загрузился Спасибо.
0
|
91 / 90 / 37
Регистрация: 05.08.2011
Сообщений: 428
|
|
30.08.2014, 12:57 | 8 |
StreamReader у вас действительно не используется. Лично я его применения в данном коде не вижу, считывание происходит через NetworkStream.
Время отклика должно уменьшиться при постоянном соединении, это логично. На счет экономии ресурсов - не знаю... Хмм, сейчас специально посмотрел, у метода NetworkStream.Write - нет перегрузки, где отправляется стринговая переменная, если Вы найдете способ отправлять строку сразу и сервер не будет говорить Вам ошибок, то проблем нет)) Да и вообще информация по интернету передается в виде "0" и "1", в конечном итоге где-то происходит это преобразование. P.S. суперпуперзнатоки просьба не пинать, если где-то не прав, я только учусь.
0
|
30.08.2014, 12:57 | |
30.08.2014, 12:57 | |
Помогаю со студенческими работами здесь
8
найти точки пересечения (если таковые имеются) параболы(парабола любая) Составить программу, которая удаляет из списка L все элементы E, если таковые имеются. Есть ли в массиве нулевые элементы и, если таковые имеются, вывести номер первого из найденных Массив: Заменить нулем все элементы этой матрицы, равные x, если таковые имеются. Проверьте правильность кода Проверьте правильность кода) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |