![]() |
|
||||||||||
|
|
|
|||||
|
Как на с++ сделать сервер, документации, или чтото. И как его седенить?
Да я порылся в интренете нашол кучу всякого, вот к примеру server Ruby: http://haxe.ru/node/134 никогда не слышал об таком языке программирования ![]() Начитался что после С++ надо какуюто платформу что такое платформа ? Нашол какуюто ссылку плотформу ACE . Та даже самый просто php чат как сделать? у меня есть прекрасный исходник пхп чата флеш+пхп , я взял шаровый пхп хостинг, ну и всеровно, чат никак не могу запустить. Дальше: Простейшая передача числа из клиента к серверу (тоесть у примеру с сайта на сервер у меня на компьютере ip: port). Как такое сделать? как сделать чтобы к примеру записалось число в xml файл и это число сразу отобразилось у другой флешки. Короче словом, как сделать сервер для потокового приема и отдачи хотябы чисел. Можно самый примитивный, или исходник какойто. Помогите розобратся в этой мурне ) |
|
|||||
|
listener
|
От всей души вкладываю примитивный исходник, рабочий, проверял в связке с флэшем:
#include <iostream>
using namespace std;
#include <winsock2.h>
#pragma comment (lib, "ws2_32.lib")
#pragma comment (lib, "mswsock.lib")
void main(void) {
char PCName [30], ClientName[30], Message[200];
WSAData WSADat; // Свойства WinSock (результат функции WSAStartup)
sockaddr_in sin; // Свойства(адрес) создаваемого сокета
SOCKET Sock, Client; // Серверный и клиентский сокеты
WSAStartup(0x0202,&WSADat); // Инициализация WinSock
// 0x0202 - версия WinSock. Может быть 1.0, 1.1, 2.0, 2.2
// WSADat - структура, куда будут занесены рез. инициализации
gethostname(PCName, 30); // Получение имени текущего ПК
sin.sin_family = AF_INET; // Тип адреса
sin.sin_addr.s_addr = 0; // IP-адрес сервера (пори создании сервера можно 0)
sin.sin_port = htons(2803); // Номер порта сервера
Sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); // Создание сокета
bind(Sock, (sockaddr*)&sin, sizeof(sin)); // Связывание созданного сокета с адресом sin
// ***** Ожиданеи клиента
cout << "Wait of client..." << endl;
listen(Sock, SOMAXCONN); // Прослушивание сокета сервером (для подключения клиента)
Client = accept(Sock, (sockaddr*)&sin, 0); // Ожидание клиента
recv(Client, ClientName, 30, 0); // Получение имени компьютера клиента
send(Client, PCName, strlen(PCName) + 1, 0); // Отправка имени этого компьютера (сервера)
cout << "Client ( " << ClientName << " ) has connected!" << endl;
// ***** Меню
int Menu;
do {
cout << "1. Send message;" << endl;
cout << "2. Get Message;" << endl;
cout << "3. Quit;" << endl;
cout << "Make your selection: "; cin >> Menu;
switch (Menu) {
case 1:
// Отправка сообщения клиенту
cout << "Enter message: "; cin.get();
cin.getline(Message, 200);
if (send(Client, Message, strlen(Message) + 1, 0) != SOCKET_ERROR) cout << "Sent!\n";
else cout << "Error of sending!\n";
break;
case 2:
// Приём сообщения от клиента
if (recv(Client, Message, 200, 0) != SOCKET_ERROR) {
cout << Message << endl;
cin.get();
}
else cout << "Error of getting!\n";
break;
};
cout << endl;
} while (Menu != 3);
// Закрытие сокетов и окончание работы с WinSock
closesocket(Sock);
closesocket(Client);
WSACleanup();
}
.Да, хорошо бы подковаться малость, а то опять тема получится никакая. Последний раз редактировалось alexcon314; 29.12.2009 в 18:17. |
|
|||||
|
alexcon314
Полегчало =) но ещё интересует как подконектить к нему флешку ??? |
|
|||||
|
listener
|
Ну, как подконнектить... так вот, примерно:
// AS 2.0 socket client code
var socket:XMLSocket = new XMLSocket();
socket.onConnect = function(success:Boolean) {
if (success) {
o("Connection succeeded!");
socket.send("ogogo");
} else {
o("Connection failed!");
}
};
if (!socket.connect("127.0.0.1", 2803)) {
o("Connection failed!");
}
socket.onClose = function(){
o("Connection closed.");
}
socket.onData = function(src) {
o(src);
};
sendBtn.onRelease = function() {
socket.send(toSend.text);
};
function o(msg) {
out.text = msg + newline + out.text;
}
|
|
|||||
|
Регистрация: Aug 2010
Сообщений: 9
|
Цитата:
|
|
|||||
|
Регистрация: Jan 2010
Сообщений: 41
|
Спасибо все классно все работает только есть 2 вопроса
1) при компиляции в swf и при запуске этого swf плеер сообщает что производится попытка небезпасной операции (как это убрать чтобы не у меня ни у остальных клиентов этой ошибки не было) 2) Сокет позволяет только 1 соединение? просто если запускать 2 клиента то 1 не работает, или это зависит от самого сокет сервера? =) Заранее спс за ответы |
|
|||||
|
listener
|
1. Это нормально. Так работает система безопасности плеера. Разберитесь с ней.
2. Исходник примитивный. Это просто иллюстрация, демонстрирующая некоторые базовые принципы. Если хочется что-то получше, ну... я не знаю. В сети полно исходников и компонент для сборки сервера. Вы сделали первый шаг, так не останавливайтесь. |
|
|||||
|
Регистрация: Jan 2010
Сообщений: 41
|
ММ а подскажите пожалуйста каким образом с ней можно разобраться =) и так чтоб не только у себя =) и кстати ошибку такую выдает только если свфку запускаешь а когда на веб сервер выкладываешь так сразу коннект еррор но ошибки той нету
|
|
|||||
|
Регистрация: Jan 2010
Сообщений: 41
|
Сижу весь день ломаю голову как сделать "многопользовательский сервер" ничего пока не вышло
Я еще вычитал что надо делать 2 сокетами 1 соединяет 2 меняет данные Если не сложно может накините какой-нибудь примерчик И вобще как образом осуществить весь процесс этого онлайна, где копать, что необходимо. Цель у меня такая: -Есть база Mysql в ней допустим [login, pass, lvl, exp, hp] -Есть сайт PHP в нем все бонально просто [авторизация, после логина доступ к игре, от туда мы выхвавтыаем $_SESSION['login'] пихаем во flash дальше из Flash'a посылаем запрос на сокет сервер [login] ] -Сокет сервер [берет этот [login] и на основании его делает запрос в базу откуда выхватывает всю строку и посылает обратно ] -Flash уже действует дальше на основании этих данных Вроде все понятно (сама структура) поправьте меня если все происходит не так Половиу из этого я знаю как реализовать половину нет -Каким образом принятые данные из сокет сервера можно преобразовать в переменные и чтобы во флеше все выстроилось как надо -Как сделат так чтобы при обращении к сокет серверу происходило какбы потоковое действие и не надо было ждать пока 1 пользователь закончит общаться с сокетами -и вот самого главного я не пойму каким эт образом можно различить юзеров, да даже бонально крестики нолики как свф поймет когда ходит юзер1 а когда юзер2 =) БОЛЬШАЯ просьба если кому не трудно, кто сталкивался или просто знает, дайте плз совет, ссылку, пример, все что угодно! Огромный поклон, Спасибо! Последний раз редактировалось stinkybob; 16.01.2010 в 00:00. |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:00. |
|
|
« Предыдущая тема | Следующая тема » |
|
|