![]() |
Модераторы: feodorv |
![]() ![]() ![]() |
|
Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Столкнулся в первые с написанием сервера.Возникли вопросы по теории
![]() 1.Если сообщения подаются на сервер от 6 клиетов,то нужно ли создавать 6 потоков на сервере,для их работы,или Винда сама справиться? 2.Нормально ли работают проги в виде серевера на 2000/XP,или нет смысла создавать такую прогу? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
|||
|
||||
En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: нет Всего: 20 |
Настоящие реальные знания будут, если ты перечитаешь весь rfc и будешь писать не через CSocket!
"Если сообщения подаются на сервер от 6 клиетов,то нужно ли создавать 6 потоков на сервере,для их работы,или Винда сама справиться?" Теоретически надо использовать функцию %%%%Listen, , а вот там задается максимальное кол-во подключений одновременно, всё имхо происходит ассинхронно именно через %%%%Listen.(там же задаётся такой параметр, как соединять для подключенного сокета новый сокет) Но практически сталкиваешься с такой проблеммой, как слишком долгое обслуживание подключившихся сокетов, то есть если будет обновременно подключаться 4 сокета, прога может ненеадолго подвиснуть, поэтому имхо лучше будет создавать потоки + ты не знаешь точно насколько загружен канал связи. "Нормально ли работают проги в виде серевера на 2000/XP,или нет смысла создавать такую прогу?" У меня всё работает ![]() пояснения %%%% -тут я не вспомнил некоторых символов... |
|||
|
||||
Mad |
|
||||||
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 3 Всего: 19 |
Маленькое уточнение, listen() задает размер ОЧЕРЕДИ подключений (а не максимальное колличество). Coocky Общая схемма работы сервера такова
Если неохота создавать потоки, то можно воспользоваться ассинхронными методами (тогда winsock создаст поток за тебя ![]() И надо помнить, что если ты будеш использовать STREAM сокеты, то надо еще какойто протокол высокого уровня придумать. (В оригенале если ты в socket ложиш long, выдать он может его как 4*char, так что надо пересылать или структуры фиксированной длины, или структуры содержащие свою длинну или ввести определение разделителя). |
||||||
|
|||||||
Coocky |
|
||||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Да и максимум 5 по умолчанию...
Да причем здесь это...Вообще эа прога лучше б была под PHP-так не знаю я его хорошо пока.... Для локальной сетки мне с головой WinSocket хватит...
никогда не сталкивался....А что к примеру еще может измениться... Еще вопрос опять с использованием WinSocket.Как узнать адрес клиента ,от которого пришло сообщение,или по другому-как выплнить какой -то запрос,который сделал клиент и оправить именно ему выполнение запроса?Или SOCKET client это один,а SOCKET client2 второй?Всегда баловался с одвумя прогами(клиент - сервер),а как дело дошло до множества-потерялся что-то.... ![]() -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
||||||
|
|||||||
Mad |
|
||||||
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 3 Всего: 19 |
Coocky
В итоге каждый поток у тебя будет работать с отдельным клиентом.
Функция accept() возвращает адресс клиента. И вообще уточни, какие сокеты тебя интересует STREAM или DATAGRAM Это сообщение отредактировал(а) Mad - 20.12.2004, 17:35 |
||||||
|
|||||||
Coocky |
|
||||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Вообще-то SOCK_STREAM.Уж больно нужно достоверность данных ![]() Я прочитал твой код,я работал по_другому немного...Ща нет под рукой кода,но если интересно скину ![]() Я немного не пойму твоего кода,в смысле синтаксиса ![]() ![]()
Я тут немного прогнал,с вопросом ![]() ![]()
я че-то про это ничего не знаю..... Вообщем так представляю себе свою прогу Запускается сервер-сижу слушаю сеть.Тут соединяется клиент-хватаю паренька за уши(получаю о нем информацию, кидаю его в поток,делаю что надо и отпускаю с данными и с миром ![]() Правильная мысль? Да,Mad,а как выуживать из очереди сообщений,или это опять автоматом-(читай халява) ![]() Жду ответа ,а пока держи "+",за мои старые слова ![]() ![]() -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
||||||
|
|||||||
Mad |
|
||||
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 3 Всего: 19 |
Понятие сообщений есть для DATAGRAM сокетов, а для STREAM это просто непрерывный поток. Привиди пример, что надо сделать (с датообменом), тогда будет легче обьяснить. |
||||
|
|||||
Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
А просто работа с базой данных.Посылается запрос,получаем данные запроса и данные отправляем обратно
![]() -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
|||
|
||||
Mad |
|
|||
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 3 Всего: 19 |
Coocky
А почему не дать клиенту прямой коннект к базе ? |
|||
|
||||
Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Требования заказчика.Обновлять данные должен только сервак.Остальные только смотреть.. -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
|||
|
||||
Mad |
|
|||
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 3 Всего: 19 |
Ну так в чем проблемма ? ![]() Делаеш в базе двух пользователей. Например user и server Клиентские проги коннектяца к базе под user, у которого в правах только выборка банных установленна. |
|||
|
||||
Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Че-то в Access я такого не видел... Да еще и доработки могут быть.Прога может взаимодействовать не только посредством бд.... А конектиться...Лучше одному подключаться. Это сообщение отредактировал(а) Coocky - 22.12.2004, 15:47 -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
|||
|
||||
Mad |
|
|||
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 3 Всего: 19 |
Ну сразу-бы и сказал, что ты БД не используеш ![]() Если каждая запись не превышает 4к, то лучьше использовать DATAGRAM |
|||
|
||||
Coocky |
|
||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Не понял...Это отношение к Access ![]()
Ну могу сказать точно... -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
||||
|
|||||
Mad |
|
|||
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 3 Всего: 19 |
Общая схема такая.
Клиент отправка пакета запросса на сервер (sendto() формат пакета определяеш сам) Сервер Получил запрос (recvfrom()), создает поток, в котором обрабатывает запрос, и начинает посылать пакеты, содержащие данные клиенту (sendto()), по завершению данных, отсылает стоповый пакет. Клиент Принимает данные (recvfrom()) ![]() |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |