170 похожих чатов

Прошу прощения если нубский вопрос и уже когда-то обсуждалось: Мне нужно

реализовать подключение множества клиентов к одному серверу на TCP сокетах, на котором 1 поток приема и отправки сообщений, т.е сервер в одном потоке слушает всех клиентов (не спрашивайте зачем, это учебный проект и я делаю его по условиям). Я столкнулся с такой траблой, раз поток один, а не отдельный под каждого клиента, то мне получается при приеме сообщения нужно выяснить авторизирован ли клиент который это сообщение прислал, что первое в голову пришло - это завести Dictionary<int, User>, где key это уникальное целочисленное значение, а value это собственно сам юзверь, при авторизации сервер будет генерировать случайный ключ и возвращать его клиенту, дальше клиент в каждом сообщении будет передавать этот ключ и при обращении сервер будет проверять есть ли такой ключ в Dictionary ну и будет отвечать в зависимости от того есть ли такой юзер или есть ли у него права на выполнение той или иной операции. А при выходе клиента сервер просто будет удалять запись по ключу из Dictionary.

Говнокод ли это, если не учитывать что сообщения обрабатываются в одном потоке?

1 ответов

1 просмотр

да

Похожие вопросы

Обсуждают сегодня

И ещё вопрос: можно ли типа как на дос как-то запариться и с помощью прерываний выводить текст, вместо функции printf ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
34
Ладно, ещё тупого спрошу. Код должен банально вывести значение регистра на консоль, на деле же не выводя ничего, просто оставляя нерабочую консоль (открыта, ничего не написан...
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
25
здравствуйте. пытаюсь проверить, содержится ли в десятичном представлении инта некоторая цифра. совершаю: strstr(x, "5") != NULL) получаю ошибку с фото (заведомо неработающий ...
Катя Шевчук🪇
17
Что там вообще с кроссплатформенностью?
🄼🄰🄺🅉🄰🄸
23
{ char buff = *start; *start = *end; *end = buff; } Из-за этой строчки? Что каждый символ через перем бафф? Как вариант использовать другие со...
Wenks
12
#include <stdio.h> #include <string.h> int main() { char *str = "Hello World"; char *ptr; int i = 0; for(char *end = str + strlen(str) - 1; end = str; ptr++, ...
Wenks
9
а я правильно понимаю что в винде сетевые диски выполнены на уровне юзерспейс драйвера? ну я про те которые webDAV, SMB и прочие высокоуровневые
Mixail Frolov
9
Доброй ночи. Вопрос знатокам. Имеется некая таблица, результат которой выведен в DBGrid на форме. И есть форма, с помощью которой можно как добавить запись, так и отредактиров...
Евгений
28
Кстати, а я вот тут подумал. Допустим, у нас имеется цикл который выполняет огромное количество итераций, но мы хотим, чтобы какие-то действия исполнилось только один раз. В Я...
The Bird of Hermes
23
а всё почему? потому что ассемблер в отличии от яву порождает множество пагубных привычек, среди которых например можно отметить использование глобальных переменных для всего ...
Mixail Frolov
35
Карта сайта