Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.12.2009, 17:52
deman455 вне форума Посмотреть профиль Отправить личное сообщение для deman455 Найти все сообщения от deman455
  № 1  
Ответить с цитированием
deman455

Регистрация: Nov 2009
Сообщений: 481
Отправить сообщение для deman455 с помощью ICQ
По умолчанию Сервер для Flash на C++ (socket)

Как на с++ сделать сервер, документации, или чтото. И как его седенить?
Да я порылся в интренете нашол кучу всякого, вот к примеру server Ruby:
http://haxe.ru/node/134 никогда не слышал об таком языке программирования
Начитался что после С++ надо какуюто платформу что такое платформа ?
Нашол какуюто ссылку плотформу ACE .
Та даже самый просто php чат как сделать? у меня есть прекрасный исходник пхп чата флеш+пхп , я взял шаровый пхп хостинг, ну и всеровно, чат никак не могу запустить.
Дальше:
Простейшая передача числа из клиента к серверу (тоесть у примеру с сайта на сервер у меня на компьютере ip: port). Как такое сделать? как сделать чтобы к примеру записалось число в xml файл и это число сразу отобразилось у другой флешки.

Короче словом, как сделать сервер для потокового приема и отдачи хотябы чисел. Можно самый примитивный, или исходник какойто. Помогите розобратся в этой мурне )

Старый 29.12.2009, 18:10
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 2  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
От всей души вкладываю примитивный исходник, рабочий, проверял в связке с флэшем:
Код:
#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();
}
Компилил под MS VS C++ 2005 Express. Полегчало? .
Да, хорошо бы подковаться малость, а то опять тема получится никакая.


Последний раз редактировалось alexcon314; 29.12.2009 в 18:17.
Старый 29.12.2009, 19:00
deman455 вне форума Посмотреть профиль Отправить личное сообщение для deman455 Найти все сообщения от deman455
  № 3  
Ответить с цитированием
deman455

Регистрация: Nov 2009
Сообщений: 481
Отправить сообщение для deman455 с помощью ICQ
alexcon314
Полегчало =)
но ещё интересует как подконектить к нему флешку ???

Старый 30.12.2009, 09:19
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 4  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Ну, как подконнектить... так вот, примерно:
Код:
// 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;
}
В AS 3.0 можно юзать класс Socket.

Старый 26.08.2010, 00:47
Dimrix вне форума Посмотреть профиль Отправить личное сообщение для Dimrix Найти все сообщения от Dimrix
  № 5  
Ответить с цитированием
Dimrix

Регистрация: Aug 2010
Сообщений: 9
Цитата:
Сообщение от alexcon314 Посмотреть сообщение
Ну, как подконнектить... так вот, примерно:
Код:
// 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;
}
В AS 3.0 можно юзать класс Socket.
Взял сервачёк написаный на си и попытался привязать твой скрипт. Флешу удаётся законектится, и даже отправить сообщение, которое сервак успешно принимает. Но вот сприёмом данных у клиента фигня - как-будто сервер молчит, хотя проверял как локально так и посети телнетом заходить на порт сервака - он на команды мне отвечает. А флеш не видет ответов :-( Может подскажешь чего не так?

Старый 15.01.2010, 17:47
stinkybob вне форума Посмотреть профиль Отправить личное сообщение для stinkybob Найти все сообщения от stinkybob
  № 6  
Ответить с цитированием
stinkybob

Регистрация: Jan 2010
Сообщений: 41
Спасибо все классно все работает только есть 2 вопроса

1) при компиляции в swf и при запуске этого swf плеер сообщает что производится попытка небезпасной операции (как это убрать чтобы не у меня ни у остальных клиентов этой ошибки не было)

2) Сокет позволяет только 1 соединение? просто если запускать 2 клиента то 1 не работает, или это зависит от самого сокет сервера? =)


Заранее спс за ответы

Старый 15.01.2010, 18:15
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 7  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
1. Это нормально. Так работает система безопасности плеера. Разберитесь с ней.
2. Исходник примитивный. Это просто иллюстрация, демонстрирующая некоторые базовые принципы.
Если хочется что-то получше, ну... я не знаю. В сети полно исходников и компонент для сборки сервера. Вы сделали первый шаг, так не останавливайтесь.

Старый 15.01.2010, 18:20
stinkybob вне форума Посмотреть профиль Отправить личное сообщение для stinkybob Найти все сообщения от stinkybob
  № 8  
Ответить с цитированием
stinkybob

Регистрация: Jan 2010
Сообщений: 41
ММ а подскажите пожалуйста каким образом с ней можно разобраться =) и так чтоб не только у себя =) и кстати ошибку такую выдает только если свфку запускаешь а когда на веб сервер выкладываешь так сразу коннект еррор но ошибки той нету

Старый 15.01.2010, 18:31
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 9  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Если запускаете свф локально, в настройках публикации (File -> Publish Settings...)на вкладке Flash выберите Access network only.

Старый 15.01.2010, 22:29
stinkybob вне форума Посмотреть профиль Отправить личное сообщение для stinkybob Найти все сообщения от stinkybob
  № 10  
Ответить с цитированием
stinkybob

Регистрация: 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, время: 09:17.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 09:17.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.