LINUX.ORG.RU

Пример разработки простого многопоточного сетевого сервера

 ,


3

1

В этой статье мы рассмотрим организацию надежного и безопасного взаимодействия клиента и сервера. В предыдущих частях мы рассмотрели подготовительную работу с сервером, как проверяются подлинность учетной записи и полномочия клиента, претендующего на решение своих задач на нашем сервере. После успешного прохождения вышеупомянутых процедур клиент считается «своим человеком» (авторизованным клиентом), и теперь сервер должен перейти к исполнению его команд. Разумеется, тема организации работы клиентов с сервером не нова и существует немало программных продуктов, в которых всё сделано за нас, и нам остаётся только написать свою функцию и сказать среде выполнения, по какой команде клиента её выполнять. Но в нашей задаче — организации надежного и безопасного взаимодействия клиента и сервера — есть нюансы, которые надо учитывать.

>>> Подробности

★★★

Проверено: Shaman007 ()
Последнее исправление: anonymous_incognito (всего исправлений: 1)

Ответ на: комментарий от solardiz

> > > if ((m += l) < l)

Спасибо за интересную дискуссию. Как ловить целочисленное переполнение при сложении я раньше просто не задумывался, всегда запускал свои программы в контролируемом окружении. Как это работает и почему unsigned, я понял сразу.

По теме ctype macros

Да, тема signed/unsigned и просто char нифига не простая. Но почему-то gcc -Wall не ругнулся на макросы ctype :) Хотя обругал меня за смешение unsigned char и просто char в другом коде.

Casus ★★★★★
()
Ответ на: комментарий от Casus

> Но почему-то gcc -Wall не ругнулся на макросы ctype :)

Думаю, по двум причинам: во-первых, gcc о ctype знает лишь то, что прописано в .h-файлах (а предполагаемый тип аргумента макроса там задать негде - или, во всяком случае, я не знаю такого GNU extension), а во-вторых в glibc есть workaround.

Насколько я помню, использование ctype macros на char реально давало warning'и на некоторых других платформах (дело было давно) - кажется, на тему использования char как array subscript.

solardiz
()
Ответ на: !!! HLP от xawari

Как раз занимаюсь написанием сетевого сервера с доступом клиентов - дорогие коллеги, есть ли у вас что посоветовать?

Нужно больше конкретики (что за сервер, что он будет делать, Open Source ли, на какие под-темы требуются советы). Лично я сейчас не стану влезать в еще одну дискуссию, но тем не менее:

для сети использую enet.

http://enet.bespin.org

Любопытный выбор. А чем он обусловлен? По этому выбору, могу предположить, что сервер - что-то вроде IM, а может трекер для p2p-сети. Не угадал? Со стороны клиентов тоже enet? И как enet, хорош?

Думаю, это и еще кому-нибудь здесь будет интересно.

solardiz
()
Ответ на: комментарий от solardiz

> предполагаемый тип аргумента макроса там задать негде - или, во всяком случае, я не знаю такого GNU extension

Поправка: можно создать макрос, который будет приводить к ошибке при компиляции (на этапе уже после препроцессора) если ему дать не тот тип аргумента, но это будет hack и сообщение об ошибке вряд ли будет соответствовать ее сути.

solardiz
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.