|
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
|
|
Socket: Client & Server11.05.2010, 22:15. Показов 16744. Ответов 86
Метки нет (Все метки)
Нужен квалифицированный совет!
Существует устройство, на котором стоит ОС Linux. Это устройство соединено с ПК с Win. Это устройство с ОС Линукс должно отдавать постоянно данные на ПК, но при помощи приложения на ПК оно еще должно управляться. Используя сокеты, написан сервер на "С" под Линукс и Клиент на "С++" под Win на ПК. Но чувствую что этого недостаточно. Как я понял, сервер не может осуществлять постоянную передачу данных, кроме ответных сообщений на запрос от клиента. Если не прав - поправьте меня. Т.е., как я догадываюсь, нужно реализовывать на обоих машинах и сервер и клиент? Клиент под Линукс нужен чтобы постоянно отправлять данные от устройства серверу на ПК, а сервер ПК будет подтверждать прием данных, сервер под линукс нужен чтобы принимать запросы от клиента из Win (ПК) на упраление (изменение параметров устройства). Правильные мысли? Или можно сделать проще?
1
|
|
| 11.05.2010, 22:15 | |
|
Ответы с готовыми решениями:
86
FTP-client на Socket API Local chat, C++ server JAVA client Server&Client Socket, ошибка подключения |
|
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
|
|
| 17.05.2010, 21:03 [ТС] | |
|
fasked, спасибо за информацию, но я уже понял в чем дело и как правильно отправлять/получать куски файла.
Для отправки не надо вычислять остаток, просто нужно знать конец файла и текущий указатель при чтении, и прочитать (конец-указатель) байт в случае, когда (конец-указатель)<размера блока отправляемых данных.
0
|
|
|
49 / 49 / 3
Регистрация: 16.05.2010
Сообщений: 348
|
|
| 18.05.2010, 01:40 | |
|
Выложишь полные сорцы. Интересно посмотреть на все это дело в куче
0
|
|
|
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
|
||||||
| 20.05.2010, 18:35 [ТС] | ||||||
|
При нажатии в клиенте кнопки соединения с сервером, хочу реализовать автоматический коннект, при последующем включении сервера.
Код:
0
|
||||||
|
|
|
| 20.05.2010, 19:56 | |
|
sitesv, ты хоть объясни, что это у тебя за код и что за сокет? Когда пишут про кнопку, то интуитивно кажется, что дело идёт о клиенте, хотя у тебя похоже на код сервера. Без внятных пояснений, что такое for_select_connect (ибо "наш сокет" не канает), тебе никто ничего не скажет
Ну и ремарка: вместо S_un (что соответствует AF_UNIX) должно быть S_in (что соответствует AF_INET).
0
|
|
|
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
|
|
| 20.05.2010, 20:32 [ТС] | |
|
это код для клиента, в структуру (sockaddr_in) adr_serv заносится тип сокета, ip адрес сервера (dest_ip),
и порт сервера dest_port, на который и будет происходить соединение. for_select_connect - это множество, в которое заносится дескриптор сокета, созданного на клиенте ("наш сокет"), и потом это множество используется в select. За ремарочку спасибо. Но, если у меня идет соединение с сервером, который реализован в Linux, то может быть S_un в данном случае актуально?
0
|
|
|
|
||
| 20.05.2010, 20:52 | ||
|
0
|
||
|
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
|
|
| 20.05.2010, 20:59 [ТС] | |
|
0
|
|
|
|
|
| 20.05.2010, 21:44 | |
|
Что значит "while продолжает крутиться"? У тебя select отрабатывает или нет (т.е. циклится внутри него или из него выходим, но с нулевым результатом)? И что ты ожидаешь? select должен отработать только тогда, когда со стороны сервера пришли какие-то данные на "наш сокет"
> for_select_connect - это множество, в которое заносится дескриптор сокета Что ты с этим сокетом сделал? Просто создал или на сервер законнектился? Я вижу, что ты заполняешь структуру addr_serv, но не вижу, чтобы ты дальше с ней что-то делал
0
|
|
|
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
|
|
| 20.05.2010, 21:57 [ТС] | |
|
вернусь в смысл идеи, которую преследую...
есть оператор connect, для которого впоследствии, после выхода из while, планировал использовать addr_serv. Видимо это и был мой косяк... Оператор connect использую для соединения с сервером. но, он является блокирующим, а я не хочу, чтобы программа зависала до того, как произойдет соединение с сервером. Но... рассматриваю ситуацию, когда клиент пытается подключиться, но получает отрицательный ответ, и клиент продолжает пробовать наладить связь с сервером. Потом, допустим, запускаем сервер, и клиент после этого организует коннект с сервером. Не хочу использовать оператор fcnt, который делает connect, как понимаю и все остальные блокирующие операторы, неблокирующими. Быть может есть возможность сделать неблокирующим connect, а после соединения опять сделать блокирующим? Опыта пока в этом нет.
0
|
|
|
|
||
| 20.05.2010, 22:03 | ||
|
Если хочешь, чтобы какой-то процесс не тормозил клиент - делай его в потоке. А для начала сделай хоть что-то хоть как-то без умностей и выкрутасов. Когда заставишь работать программу хотя бы через ж..у, тогда и будешь думать, как оптимизировать и улучшать. Это относится не только к сетевой программе, но и к любой программе вообще
0
|
||
|
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
|
|
| 20.05.2010, 22:07 [ТС] | |
|
Да, согласен. Уже отписал, что ошибся... это об лошади позади телеги.
Как раз сделал, что работает, что коннект срабатывает, когда загружен сервер, а клиент пытается к нему подключиться. Да, по поводу потока, пытаюсь по таймеру подключиться... но вот и стал вопрос по поводу блокировки connect'a. как можно красиво обойти коннект без глобальной "разблокировки" операторов.
0
|
|
|
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
|
||
| 20.05.2010, 22:15 [ТС] | ||
|
есть операторы, которые позволяют сделать такую вещи неблокируюшей, т.е. указатель с коннекта пойдет дальше, но коннект вернет значение, которое соответствует ошибке или состоянию неподключенности. но я не хочу через неблокирующие состояния впоследствии работать... т.е. если в потоке, коннект в котором заблокируеься, нет смысла использовать другие, а другие мне нужны как раз для управления отправкой/приемом сообщения (данных)...
0
|
||
|
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
|
||
| 20.05.2010, 22:28 [ТС] | ||
|
0
|
||
|
|
|
| 20.05.2010, 22:50 | |
|
Т.е. фактически процесс соединения запустится в потоке на уровне ядра, а пользователь в цикле будет обращаться к connect'у до тех пор, пока поток не соединится или не обломается? Что-то не верю я в такие затеи
0
|
|
|
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
|
|
| 20.05.2010, 22:57 [ТС] | |
|
http://www.thalion.kiev.ua/idx.php/17/532/article/
вот здесь пытаются через fcntl() делать, но переводя connect в неблокирующее состояние...
0
|
|
|
|
|
| 20.05.2010, 23:08 | |
|
Интересная статья. Автор не поленился доступными словами изложить суть. Но я толком техническую часть не понял. Тут надо экспериментировать. В итоге проблема в чём? Я так понял, что через неблокирующий сокет ты смог сделать соединение, но потом не получилось сделать его НЕблокирующим?
0
|
|
|
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
|
||
| 20.05.2010, 23:38 [ТС] | ||
|
0
|
||
| 20.05.2010, 23:38 | |
|
Nodejs net socket server and android socket client Windows socket server python + socket client js Socket Android Client and Java Socket Server
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|