Вопрос по С++

Cris

Member
Ты бы обьяснил зачем тебе это надо, тогда посоветовали бы чего умного.
А так межпроцессное взаимодействие хорошо делается через все те же сокеты.
а поподробней?

вобшето я сейчас учу С++, и затронул тему сокетов, потоков, баз даных - то что часто(наверно) применяеться на практике, и для изучения написал консольный чат-сервер и клиент к нему, взаимодействие до 1000 юзеров в онлайне, хто в онлайне и месаги сохраняю в базе, месаги - как лог,

и вотя знаю что допустим для сервером MMORPG делают так:
1 сервер для конектов - аутентификации, а второй - сам гейм сервер, так вот и я в своей програме хочю разделить свой сервер - на тот что будет принимать конекты, а другой чисто для обмена сообщениями)
 

NiCketT

Member
вобшето я сейчас учу С++, и затронул тему сокетов, потоков, баз даных - то что часто(наверно) применяеться на практике, и для изучения написал консольный чат-сервер и клиент к нему, взаимодействие до 1000 юзеров в онлайне, хто в онлайне и месаги сохраняю в базе, месаги - как лог
)
Тоже писал такую штуку, только через UDP-сокет. Так проще - ненадо обрабатывать подключения и создавать новые потоки ;)
P.S. Вижу ты серьзно решил занятся программированием? Похвально. Так держать! Продолжай в том же духе!! :chef:
 

dreamer

Member
а поподробней?

вобшето я сейчас учу С++, и затронул тему сокетов, потоков, баз даных - то что часто(наверно) применяеться на практике, и для изучения написал консольный чат-сервер и клиент к нему, взаимодействие до 1000 юзеров в онлайне, хто в онлайне и месаги сохраняю в базе, месаги - как лог,

и вотя знаю что допустим для сервером MMORPG делают так:
1 сервер для конектов - аутентификации, а второй - сам гейм сервер, так вот и я в своей програме хочю разделить свой сервер - на тот что будет принимать конекты, а другой чисто для обмена сообщениями)
Ну обмен данными между клиентом и сервером у тебя идет через сокеты, вот точно так же можно реализовать обмен данными между процессами (поскольку клиент и сервер и так запущены как процессы).

Мессаги в базе хранить глупо, еще в файл для лога скидывать куда ни шло... Чат сервер просто должен транслировать приходящие сообщения всем учасникам.
Не знаю зачем в MMORPG несколько серверов, но для реализации отдельного сервера аутентификации я бы сделал так: сервер аутентифицирует юзеров и ложит в базу соотв. запись, потом указывает клиенту к какому серверу чата подключатся, сервер чата после подключения лезет в базу и ищет запись об аутентификации.
Хотя зачем это надо? :)

Кстати – дай ссылку на материал, где пишут что там несколько серверов для разных нужд.
 

Cris

Member
Ну обмен данными между клиентом и сервером у тебя идет через сокеты, вот точно так же можно реализовать обмен данными между процессами (поскольку клиент и сервер и так запущены как процессы).

Мессаги в базе хранить глупо, еще в файл для лога скидывать куда ни шло... Чат сервер просто должен транслировать приходящие сообщения всем учасникам.
Не знаю зачем в MMORPG несколько серверов, но для реализации отдельного сервера аутентификации я бы сделал так: сервер аутентифицирует юзеров и ложит в базу соотв. запись, потом указывает клиенту к какому серверу чата подключатся, сервер чата после подключения лезет в базу и ищет запись об аутентификации.
Хотя зачем это надо? :)

Кстати – дай ссылку на материал, где пишут что там несколько серверов для разных нужд.
1-е хранить месаги в базе - для учебы))
2-е как записать в базу идентификатор сокета и его данные?? чтоб потом сервер мог их считать, так как сокет открываеться при аутентификации, и как перенаправить клиентпотом с ауз на основу?
3-е я такое встречал везде, а особенно во сервах вовы и ла2, хоть на С++ хоть на Яве, везде есть 2 файлика - 1-й ауз сервер, 2-й гейм сервер
 

dreamer

Member
как записать в базу идентификатор сокета и его данные?? чтоб потом сервер мог их считать, так как сокет открываеться при аутентификации, и как перенаправить клиентпотом с ауз на основу?
Не надо записывать сокет в базу, сокет открывается между двумя потоками и передавать их проблематично.
В базу записывай пометку об аутентификации, например (IP, login) вошедшего юзера. А потом передавай юзеру адрес:порт подключения к основному серверу. Юзер отключается от этого сервера и соединяется с основным, который по базе проыеряет авторизировался ли этот пользователь.
 

Cris

Member
Не надо записывать сокет в базу, сокет открывается между двумя потоками и передавать их проблематично.
В базу записывай пометку об аутентификации, например (IP, login) вошедшего юзера. А потом передавай юзеру адрес:порт подключения к основному серверу. Юзер отключается от этого сервера и соединяется с основным, который по базе проыеряет авторизировался ли этот пользователь.
ну да впринципи так и есть, ауз сервер служит для того чтоб конект был на один какбы сервер, а выбрать можнобыло несколько)

проше оставить так как есть)

кста что посоветуеш, я щас в 11 класе, но в перед 11 и в 11 хочю по программированию зделать какойто проект для защиты в МАН(мала академия наук), но идее нема, говори практически все что угодно, тема проекта должна быть нужная комуто, чтоб небило много аналогов, и что б был вполне реален в реализации
 
Останнє редагування:

Nota

http://justech.fd - user
ну да впринципи так и есть, ауз сервер служит для того чтоб конект был на один какбы сервер, а выбрать можнобыло несколько)

проше оставить так как есть)

кста что посоветуеш, я щас в 11 класе, но в перед 11 и в 11 хочю по программированию зделать какойто проект для защиты в МАН(мала академия наук), но идее нема, говори практически все что угодно, тема проекта должна быть нужная комуто, чтоб небило много аналогов, и что б был вполне реален в реализации
ты в 11-ом?? не смеши =))
 

Cris

Member
ты в 11-ом?? не смеши =))
ачепятка)) я и незаметил я щас в 10)

кста у меня еше одна трабла:
я написал свой сервер/клиент в консоли, и все нор работает, но я захотел клиент зделать - Windows Form Application, но не туто было
Код:
#include "Form1.h"
#include "iostream"
#include "winsock2.h"
#include "windows.h"
#include "string"
#include "chatstr.h"
#include "process.h"
.....
WSAStartup(0x202,(WSADATA*)&buff[0]);
soptions.sin_family=AF_INET;
soptions.sin_port=htons(port);
soptions.sin_addr.S_un.S_addr=inet_addr("10.0.3.89");
serv=socket(AF_INET,SOCK_STREAM,0);
connect(serv,(sockaddr *)&soptions,sizeof(soptions));
....
serv=socket(AF_INET,SOCK_STREAM,0); - здесь ошибок не выдает, НО
connect(serv,(sockaddr *)&soptions,sizeof(soptions)); тут пишет:
error C2064: term does not evaluate to a function taking 3 arguments

че делать?

библиотеки подключены
 
Останнє редагування:

dreamer

Member
кста что посоветуеш, я щас в 10 класе, но в перед 11 и в 11 хочю по программированию зделать какойто проект для защиты в МАН(мала академия наук), но идее нема, говори практически все что угодно, тема проекта должна быть нужная комуто, чтоб небило много аналогов, и что б был вполне реален в реализации
Хэх, все такие темы хотят, кто для мана, кто для денег :)
Попробуй поискать чего-то в школе, например:
- можно автоматизировать какой-нить документооборот, например сделать базу данных оценок и сайт для их публикации или еще чего-то;
- можно сделать генератор расписаний, но это сложновато;
- можно сделать какую-нить интерактивную обучалку/сайт/еще чего для помощи в учебном процессе.

А так идеи обычно сложнее найти чем реализовать.
 
A

AkeL.php

Guest
offtop
Ищу компилятор С под дос с ИДЕ, borland.
You must be registered for see images
 
Зверху