|
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
|
|
Socket: Client & Server11.05.2010, 22:15. Показов 16174. Ответов 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
|
||||||
| 15.05.2010, 15:17 [ТС] | ||||||
|
Пытаюсь на сервере сделать так, чтобы в while сделать проверку на подключение клиента, т.е. чтобы на accept не было блокировки. Пытаюсь сделать через select, т.е.:
Добавлено через 22 минуты Извините за попрос, ошибся сокетом, который добавлял в множество, добавлял дескриптор сокета, который образовывался в accept, а должен был, который в listen. Все равно спасибо
0
|
||||||
|
|
|
| 15.05.2010, 15:42 | |
|
Ответ, как мне кажется, в том, что в select'е у тебя указано бесконечное время, а потому res всегла будет равен единице (потому как в этом случае из select'а выйдем только тогда, когда в сокет постучится клиент)
0
|
|
|
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
|
||
| 15.05.2010, 23:48 [ТС] | ||
|
0
|
||
|
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
|
|
| 16.05.2010, 17:32 [ТС] | |
|
Очередной вопрос:
если надо отправить на сервер файл с настройками размером несколько мб, необходимо ли его нарезать, или просто считать в буфер такого размера, и этот буфер отправить на сервак? Необходима спец. подготовка этого файла?
0
|
|
|
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
|
||
| 16.05.2010, 18:37 [ТС] | ||
|
0
|
||
|
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
|
|
| 16.05.2010, 18:45 [ТС] | |
|
fasked, СПАСИБО!
0
|
|
|
|
||
| 16.05.2010, 19:15 | ||
|
0
|
||
|
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
|
|
| 16.05.2010, 19:42 [ТС] | |
|
А какой максимальный блок данных можно передать за однократную передачу?
0
|
|
|
98 / 94 / 16
Регистрация: 16.05.2010
Сообщений: 310
|
|
| 16.05.2010, 19:46 | |
|
А по чему бы не использовать средства NetBios'а. Очень удобно: нужно просто знать имя ПК в DNS и номер соединения (по умолчанию - 1). А для синхронизации использовать средства распараллеливания процессов MPI или PVI (параллельное программирование, легко можно найти ссылки). Для несложных задач вполне хватит.
Пример использования в тхт
0
|
|
|
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
|
|
| 16.05.2010, 20:14 [ТС] | |
|
0
|
|
|
98 / 94 / 16
Регистрация: 16.05.2010
Сообщений: 310
|
|
| 16.05.2010, 20:18 | |
|
Не знаю. но почему бы не попробовать, если что использовать аналоги библиотек для линукса (для винды это nd, ncmd.h).
0
|
|
|
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
|
|||||||||||
| 17.05.2010, 12:55 [ТС] | |||||||||||
|
Непонятки при передачи файла.
В клиенте открываю файл, нарезаю на куски (N-число кусков) к примеру по 102400 байт, отслеживаю остаток. В цикле отпавляю по кускам. Код клиента:
Код сервера:
Добавлено через 1 час 42 минуты Обнаружил, что, к примеру, отправляя за раз 100 кб, на приемной стороне за один раз можно принять 10 кб, а за вторую итерацию приема - оставшиеся 90 кб. Но назрел другой вопрос: еще не отправляя с клиента, а принимая на сервере, длина сообщения неотправленных данных !будет равна какому-то значению, что означает , что в очереди что-то осталось... Во второй итерации приема будет уже -1. А как обнулить эту очередь? Есть какие-нибудь операторы обнуления? чтобы и в первый раз выводилось -1 ? Добавлено через 1 час 29 минут Проведя ряд экспериментов, выяснил, что число входных байт, получаемое вначале, сигнализировало о том, что за recv из другой функции я принял не все данные. Вот и весь фокус оказался))
0
|
|||||||||||
|
|
||
| 17.05.2010, 12:57 | ||
|
0
|
||
|
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
|
||
| 17.05.2010, 13:19 [ТС] | ||
|
А что, подобные сообщения настолько перегружают мозг "форумчан", что стоит такое спрашивать? Тут же все просто, нет желания отвечать на обозначенные проблемы или просто не в курсе дел - берешь и пропускаешь это сообщения...
0
|
||
|
|
|
| 17.05.2010, 14:43 | |
|
Нет, не перегружают. Только у многих к подобным вопросам отношение такое: если видят, что человек действительно сам пытается в чём-то разобраться, то если могут, то помогут. А вот когда видно, что человек на каждый чих у всех всё спрашивает, то помогать таким людям нет никакого желания. Т.е. в такой ситуации ты оказываешься сам себе злобный буратино
0
|
|
|
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
|
|
| 17.05.2010, 14:50 [ТС] | |
|
0
|
|
|
|
||||||||||||||||||||||||||
| 17.05.2010, 18:31 | ||||||||||||||||||||||||||
|
Не знаю в чем у тебя проблема, но я обычно отправлял файлы так:
Отправитель. 1. Узнаем размер файла. 2. Вычисляем количество полных чтений в буфер
С приемником же все попроще, так как функция recv возвращает количество принятых байт - поступаем следующим образом
1
|
||||||||||||||||||||||||||
| 17.05.2010, 18:31 | |
|
Помогаю со студенческими работами здесь
40
Nodejs net socket server and android socket client Windows socket server python + socket client js Socket Android Client and Java Socket Server
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|