|
3 / 3 / 2
Регистрация: 16.12.2011
Сообщений: 21
|
|
Работа с сокетами: клиент и сервер в одной программе22.12.2011, 06:12. Показов 6561. Ответов 11
Метки нет (Все метки)
Подскажите как лучше реализовать.
Есть программа №1 она посылает данные другой программе через сокеты. Программа №2 находится в режиме слушателя. Мне нужно, чтобы после приема пакета программой№2 и некоторых действий, от этой программы по сокетам уходил ответ на программу №1. Как лучше это сделать? Я наверно глупость сделал, но делал через два слушателя:первая программа отправила пакет и врубается слшатель. вторая приняла, ее слушатель остановился и обработала пакета и отправила пакет, после чего врубила свой слушатель. Первая приняла пакет, обрабатала, слушатель врубился и повисла. Я пока думаю через асинхронные сокеты это сделать... Программа№2 всегда должна быть на приеме. А программа№1 работать на прием после первого отосланного пакета. Подскажите как лучше. Желательно с примера
0
|
|
| 22.12.2011, 06:12 | |
|
Ответы с готовыми решениями:
11
Работа с сокетами: клиент-сервер работает только из под отладки Клиент и сервер в одной программе
|
|
42 / 36 / 2
Регистрация: 18.12.2011
Сообщений: 113
|
||||||
| 22.12.2011, 15:04 | ||||||
|
создаешь Socket, назовем его listener)
Ну а если по нормальному - создаешь поток бесконечно слушающий какой-нибудь порт, в котором при подключении сразу вызываешь функцию обработчик-узла, которая делает еще один поток в котором принимает данные с подключенного пк. Ну и отправляет ответ.
1
|
||||||
|
3 / 3 / 2
Регистрация: 16.12.2011
Сообщений: 21
|
||
| 23.12.2011, 05:58 [ТС] | ||
|
Одна программа находится в состоянии постоянной прослушки. Вторая отсылает ей пакеты по сокетам. Все хорошо. Возникает проблема когда после обработки, пакеты от первой программой нужно отправить второй программе. Как это организовать????????????????????? Ставил бесконечную прослушку на двух программах, но на разных портах. Итог: происходит зависание программы
0
|
||
|
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
|
| 23.12.2011, 06:08 | |
|
Luck999, зачем создавать 2 сокета? По одному можно посылать данные в обе стороны. Так что не надо придумывать велосипед.
А вообще, чтоб программа не висла на ожидании, запускайте прослушку в другом потоке.
1
|
|
|
3 / 3 / 2
Регистрация: 16.12.2011
Сообщений: 21
|
||
| 23.12.2011, 06:13 [ТС] | ||
|
И как запустить в другой поток? это через thread?
0
|
||
|
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
||||
| 23.12.2011, 11:30 | ||||
|
1
|
||||
|
3 / 3 / 2
Регистрация: 16.12.2011
Сообщений: 21
|
|
| 23.12.2011, 11:37 [ТС] | |
|
Ну данные функции я знаю) В общем я разобрался, косякнул в одном месте и завис в непонятках. Щас все хорошо работает. Вот вопрос возник можно или организовать прослушку двух портов? Одна программа один порт слухает, а вторая-другой.
0
|
|
|
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
|
| 23.12.2011, 13:01 | |
|
В чем проблема? Создаешь два сокета с разными значениями портов и слушаешь. Их можно создавать на обычной винде, кажись, до 65к (65тыс.) штук.
0
|
|
|
42 / 36 / 2
Регистрация: 18.12.2011
Сообщений: 113
|
|||||||
| 23.12.2011, 13:59 | |||||||
|
...
Я вроде бы все уже написал. Прочитайте мои коментарии к коду. РесайвФром получает данные и записывает конечную точку на машине эти данные передавшей по ссылке переданной в аргументе (да, я чуть опечатался не out а ref), используя эту точку вы можете получать нужные данные. Это ты делаешь в одном потоке, для каждого подключившегося узла создаешь новый поток, который будет его обрабатывать - принимать данные, т.е., как обычно делаю я, (возможно это далеко не лучший вариант, спорить не буду), код недоработанный, чуть позже займусь, а пока несколько коротких вырезок:
При коннекте/отключении клиента OnConnect OnDisconnect соответственно. p.p.s часть кода стер, за его ненадобностью p.p.p.s Как вы наверное поняли, сокет сам слушает заданный вами порт, и автоматически принимает подключения и получает данные, вызывая событие ОнРесайв. Все это творится в отдельном потоке, отправка данных осуществляется функцией Send(byte[], EndPoint);
2
|
|||||||
|
3 / 3 / 2
Регистрация: 16.12.2011
Сообщений: 21
|
|
| 26.12.2011, 05:43 [ТС] | |
|
iTheSaboteur, body90, спасибо вам. Сделал. Всё работает
0
|
|
|
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
|
| 26.12.2011, 06:15 | |
|
Пожалуйста! Luck999, выложите код в тему. Кому нибудь, возможно, еще пригодится.
0
|
|
|
3 / 3 / 2
Регистрация: 16.12.2011
Сообщений: 21
|
||||||
| 26.12.2011, 07:54 [ТС] | ||||||
Сообщение было отмечено как решение
Решение
Как-то так. Бегло пробежался вроде ошибок нет, просто в моем рабочем коде много лишнего. Что явно не по теме будет. Так же делал с прослушкой на двух портах разными программами, но так как делал в качестве проверки работает или нет, уже стер. При необходимости могу написать
3
|
||||||
| 26.12.2011, 07:54 | |
|
Помогаю со студенческими работами здесь
12
Windows sockets приложения с сокетами, написание приложения сервер-клиент Работа с сокетами - скачать на сервер информацию от клиента
Авторизация в программе (клиент-сервер) Клиент и сервер Lotus на одной машине! Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|