|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.11.2009, 19:42 | #11 |
Unix C++ developer
Форумчанин
Регистрация: 16.04.2007
Сообщений: 651
|
Клиент принимает два аргумента командной строки - адрес и порт сервера, если количество аргументов отличается - выводится подсказка по использованию. Далее происходит попытка подключения, с помощью совмещнной функции создания сокета и connect. В случае успешного подключения - выполняется процедура обмена сообщениями, почти как на сервере. После чего происходит закрытие сокета и завершение программы клиента.
Рабочий клиент: |
01.11.2009, 19:42 | #12 |
Unix C++ developer
Форумчанин
Регистрация: 16.04.2007
Сообщений: 651
|
Заключение.
В этой статье были рассмотрены основы клиент/сервных приложений с использованием сокетов Беркли. Приведенный код лежит в основе практически любого подобного приложения. Все различие сводится в реализации протокола, а именно процедурах обмена сообщениями/пакетами данных с помощью read/write. Так же, для одновременной обработки множества запросов - сервера выполняют многопоточными. Принцип прост, после того как произошло входящее подключение - происходит запуск нового потока, с передачей ему сокета. В новом потоке происходит процесс обмена данными с клиентом, а основной поток в это время снова ожидает входящих подключений и процесс повторяется для нового клиента, но все это уже тема отдельной статьи. Разумеется своей статьей я донес лишь основы сетевого программирования, т.к. это очень сложная и интересная тема. Если у Вас возникли какие либо вопросы или трудности - спрашивайте. Очень рекомендую прочесть: "Стивенс Р. Unix. Разработка сетевых приложений." и "Камер Д. Разработка приложений типа клиент/сервер". Эти книги являются бестселлерами в своей области. |
01.11.2009, 19:53 | #13 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
...как скромный представитель редколлегии журнала Радиолюбитель (Минск) хотел-бы спросить вас: не хотите-ли вы сделать и опубликовать цикл статей, посвященных данному вопросу в нашей новой рубрике "Информационные технологии"?
пы-сы: если конечно-же вы не рассматриваете иные варианты или другие цели.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
01.11.2009, 19:55 | #14 |
Unix C++ developer
Форумчанин
Регистрация: 16.04.2007
Сообщений: 651
|
С превеликим удовольствием
|
01.11.2009, 20:15 | #15 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
отправил в личку, жду.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
12.03.2010, 11:56 | #16 |
Пользователь
Регистрация: 10.03.2010
Сообщений: 17
|
а чем эти сокеты лучше стандартных winsock?
|
19.04.2010, 10:36 | #17 |
Unix C++ developer
Форумчанин
Регистрация: 16.04.2007
Сообщений: 651
|
|
15.07.2010, 12:38 | #18 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Странно,у меня сервер падает сразу же после принятия любого сообщения.
Жалуется на переполнение.
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс Последний раз редактировалось ROD; 15.07.2010 в 12:40. |
16.07.2010, 16:24 | #19 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
rod@rod-desktop:~/проекты/socet_base/bin/Debug$ ./socet_base
*** buffer overflow detected ***: ./socet_base terminated ======= Backtrace: ========= /lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x50)[0x53e390] /lib/tls/i686/cmov/libc.so.6(+0xe12ca)[0x53d2ca] /lib/tls/i686/cmov/libc.so.6(+0xe05fa)[0x53c5fa] ./socet_base[0x8048b42] /lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe6)[0x472bd6] ./socet_base[0x80487e1] ======= Memory map: ======== 0018e000-001b2000 r-xp 00000000 08:14 5168 /lib/tls/i686/cmov/libm-2.11.1.so 001b2000-001b3000 r--p 00023000 08:14 5168 /lib/tls/i686/cmov/libm-2.11.1.so 001b3000-001b4000 rw-p 00024000 08:14 5168 /lib/tls/i686/cmov/libm-2.11.1.so 0045c000-005af000 r-xp 00000000 08:14 5164 /lib/tls/i686/cmov/libc-2.11.1.so 005af000-005b0000 ---p 00153000 08:14 5164 /lib/tls/i686/cmov/libc-2.11.1.so 005b0000-005b2000 r--p 00153000 08:14 5164 /lib/tls/i686/cmov/libc-2.11.1.so 005b2000-005b3000 rw-p 00155000 08:14 5164 /lib/tls/i686/cmov/libc-2.11.1.so 005b3000-005b6000 rw-p 00000000 00:00 0 00603000-006ec000 r-xp 00000000 08:14 3146 /usr/lib/libstdc++.so.6.0.13 006ec000-006ed000 ---p 000e9000 08:14 3146 /usr/lib/libstdc++.so.6.0.13 006ed000-006f1000 r--p 000e9000 08:14 3146 /usr/lib/libstdc++.so.6.0.13 006f1000-006f2000 rw-p 000ed000 08:14 3146 /usr/lib/libstdc++.so.6.0.13 006f2000-006f9000 rw-p 00000000 00:00 0 00777000-00778000 r-xp 00000000 00:00 0 [vdso] 00824000-0083f000 r-xp 00000000 08:14 7299 /lib/ld-2.11.1.so 0083f000-00840000 r--p 0001a000 08:14 7299 /lib/ld-2.11.1.so 00840000-00841000 rw-p 0001b000 08:14 7299 /lib/ld-2.11.1.so 00941000-0094b000 r-xp 00000000 08:14 5173 /lib/tls/i686/cmov/libnss_files-2.11.1.so 0094b000-0094c000 r--p 00009000 08:14 5173 /lib/tls/i686/cmov/libnss_files-2.11.1.so 0094c000-0094d000 rw-p 0000a000 08:14 5173 /lib/tls/i686/cmov/libnss_files-2.11.1.so 00f75000-00f92000 r-xp 00000000 08:14 1848 /lib/libgcc_s.so.1 00f92000-00f93000 r--p 0001c000 08:14 1848 /lib/libgcc_s.so.1 00f93000-00f94000 rw-p 0001d000 08:14 1848 /lib/libgcc_s.so.1 08048000-08049000 r-xp 00000000 08:13 918282 /home/rod/проекты/socet_base/bin/Debug/socet_base 08049000-0804a000 r--p 00000000 08:13 918282 /home/rod/проекты/socet_base/bin/Debug/socet_base 0804a000-0804b000 rw-p 00001000 08:13 918282 /home/rod/проекты/socet_base/bin/Debug/socet_base 08a30000-08a51000 rw-p 00000000 00:00 0 [heap] b777b000-b777d000 rw-p 00000000 00:00 0 b779c000-b779e000 rw-p 00000000 00:00 0 bfd04000-bfd19000 rw-p 00000000 00:00 0 [stack] Аварийный останов rod@rod-desktop:~/проекты/socet_base/bin/Debug$
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
11.08.2010, 19:51 | #20 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Кажется нашел я ошибку. Длинны строки msg было мало (по крайней мере, ее удлинение устранило ошибку.)
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Простейшее клиент-серверное приложение в Delphi 2009 | RNT | Работа с сетью в Delphi | 15 | 21.11.2010 19:08 |
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? | Demol | Работа с сетью в Delphi | 1 | 21.04.2009 16:18 |
Язык низкоуровневое программирование Assembler | jackpatriot | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 03.01.2009 19:05 |
Клиент-серверное приложение: Callback | MaTBeu | Общие вопросы C/C++ | 13 | 02.06.2008 20:27 |
Клиент-серверное приложение | veryseldom | Работа с сетью в Delphi | 8 | 20.08.2007 19:57 |