Сокет-cервер на с/с++ и клиент на ActionScript 2.0 XMLSocket

Модератор: Fastman

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Dimrix
рядовой
Сообщения: 25
Зарегистрирован: 2006-05-08 13:59:34
Контактная информация:

Сокет-cервер на с/с++ и клиент на ActionScript 2.0 XMLSocket

Непрочитанное сообщение Dimrix » 2010-08-26 20:28:07

День добрый. Не могу победить данную связку. Нашёл вполне рабочий пример сокет-сервера http://www.lissyara.su/articles/freebsd ... et_server/ от которого можно отталкиваться. Скомпилил, проверил локально и посети - всё отлично работает. Начал прикручивать в АС2.0 - конектится, сообщение удачно отсылается на сервер, но ответа ну никак не хочет видеть. Танцую с бубном уже 3-4 часа - не могу победить. Гугл курил-перекурил, не работает приём и всё тут! Код на АС вот:

Код: Выделить всё

	var socket:XMLSocket = new XMLSocket();
	socket.onXML = xmlReceived;
	socket.onConnect = function(success:Boolean) {
		if (success) {
			speedz.text = "Connection succeeded!" ;
			src = "info\n";
			socket.send(src);
			socket.onData();
	} else {
		speedz.text = "Connection failed!";
	}
};
if (!socket.connect("10.0.254.230", 1667)) {
	_root.speedz.text = "Connection failed!";
}
socket.onClose = function(){
	speedz.text = "Closed!";
}
socket.onData = function(src) {
	speedz2.text = src;
};

function xmlReceived (data) {
	var e = data.firstChild;
	if (e != null && e.nodeName == "MESSAGE"){
		displayMessage(e.attributes.user, e.attributes.text);
		speedz1.text = "dat " + e.attributes.text;
	}
}
ЗЫ: н-ая модификация, уже кучу примеров с тырнету подставлял - тишина мёртвая! :st:
Последний раз редактировалось ProFTP 2010-08-27 2:21:00, всего редактировалось 1 раз.
Причина: [code]

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Dambo
ефрейтор
Сообщения: 61
Зарегистрирован: 2009-11-27 22:29:58

Re: Сокет-cервер на с/с++ и клиент на ActionScript 2.0 XMLSo

Непрочитанное сообщение Dambo » 2010-08-27 10:10:46

О том, что текст поступил полностью, сокет-клиент судит по нулевому байту, которым сервер
должен завершать любое сообщение. Наличие нулевого байта очень важно, так как иначе сообще-
ния будет проблематично разделить (вполне может оказаться так, что часть одного сообщения
придет в TCP-сегменте с другим сообщением). Собственно, событие onData происходит именно
тогда, когда обнаруживается нулевой байт. Текстом же сообщения считается весь текст, получен-
ный от сервера между двумя событиями onData (т. е. участок данных, ограниченный двумя нуле-
выми байтами).
Кстати, хотя нулевой байт и завершает любое сообщение, в его текст, передаваемый обработчику
события onData в параметре, он не включается.
ActionScript 2 - Программирование во Flash MX для профессионалов (Дмитрий Гурский) раздел 17.4.1
А вообще рас уж пишите в разделе этого языка не мешало бы и код сервера на данном языке иначе недалеко от посыла в те форумы где ваш AC будут разбирать профи...

Аватара пользователя
Fastman
ст. лейтенант
Сообщения: 1236
Зарегистрирован: 2006-07-07 10:20:38
Откуда: Минск. РБ

Re: Сокет-cервер на с/с++ и клиент на ActionScript 2.0 XMLSo

Непрочитанное сообщение Fastman » 2010-08-27 10:25:25

Ну в чем проблема ? Добавь на серваке ф-цию логирования. И погляди что приходит и как обрабатывается.
Я просто не знаю AS, Но смотря на код не могу понять как ты вешаешь событие на приход данных.
Судя по гуглу - должно быть чего то вроде:

Код: Выделить всё

xmlsock.addEventListener(DataEvent.DATA, onData); 
private function onData(event:DataEvent):void 
{ 
    trace("[" + event.type + "] " + event.data); 
} 
Главное в жизни здоровье и любовь, остальное я все куплю.

Аватара пользователя
Fastman
ст. лейтенант
Сообщения: 1236
Зарегистрирован: 2006-07-07 10:20:38
Откуда: Минск. РБ

Re: Сокет-cервер на с/с++ и клиент на ActionScript 2.0 XMLSo

Непрочитанное сообщение Fastman » 2010-08-27 10:32:26

Dambo писал(а):
О том, что текст поступил полностью, сокет-клиент судит по нулевому байту, которым сервер
должен завершать любое сообщение. Наличие нулевого байта очень важно, так как иначе сообще-
ния будет проблематично разделить (вполне может оказаться так, что часть одного сообщения
придет в TCP-сегменте с другим сообщением). Собственно, событие onData происходит именно
тогда, когда обнаруживается нулевой байт. Текстом же сообщения считается весь текст, получен-
ный от сервера между двумя событиями onData (т. е. участок данных, ограниченный двумя нуле-
выми байтами).
Кстати, хотя нулевой байт и завершает любое сообщение, в его текст, передаваемый обработчику
события onData в параметре, он не включается.
ActionScript 2 - Программирование во Flash MX для профессионалов (Дмитрий Гурский) раздел 17.4.1
А вообще рас уж пишите в разделе этого языка не мешало бы и код сервера на данном языке иначе недалеко от посыла в те форумы где ваш AC будут разбирать профи...
Верно. Однако я в обычной практике все таки "изобретаю" свой символ терминации.
Получается нечто:

Код: Выделить всё

RQST001:<node>some data</node>~!~
Где:
(RQST001:) тип запроса (такая штука логику обработки оптимизировать позволяет). От посылки берем первые 8 символов и определяем кто будет обрабатывать. перед обработкой XML вырезаем их.
(~!~) признак окончания посылки.
Главное в жизни здоровье и любовь, остальное я все куплю.

Dimrix
рядовой
Сообщения: 25
Зарегистрирован: 2006-05-08 13:59:34
Контактная информация:

Re: Сокет-cервер на с/с++ и клиент на ActionScript 2.0 XMLSo

Непрочитанное сообщение Dimrix » 2010-09-16 1:10:21

Со старым вопросом разобрался. Есть новый вопрос!
Вопрос по потоками (многопоточный демон): можно ли в с++ (если можно то как) при работе с потоками создавать глобальную переменную, доступную всем потокам.

Аватара пользователя
Fastman
ст. лейтенант
Сообщения: 1236
Зарегистрирован: 2006-07-07 10:20:38
Откуда: Минск. РБ

Re: Сокет-cервер на с/с++ и клиент на ActionScript 2.0 XMLSo

Непрочитанное сообщение Fastman » 2010-09-16 1:17:18

Dimrix писал(а):Со старым вопросом разобрался. Есть новый вопрос!
Вопрос по потоками (многопоточный демон): можно ли в с++ (если можно то как) при работе с потоками создавать глобальную переменную, доступную всем потокам.
Вот что за совпадение :))) Только прилетел из Амстердама, Отоспался и тут новый вопрос :)
Да конечно можно. Вопрос только стоит зачем ? Для чего это нужно ?
Тут же на самом деле не проблема как это сделать. Проблема как обеспечить нужную атомарность операций. То есть не проблема, мютексы никто не отменял, но кое каких знаний это потребует.
Главное в жизни здоровье и любовь, остальное я все куплю.

Dambo
ефрейтор
Сообщения: 61
Зарегистрирован: 2009-11-27 22:29:58

Re: Сокет-cервер на с/с++ и клиент на ActionScript 2.0 XMLSo

Непрочитанное сообщение Dambo » 2010-09-16 9:29:16

Dimrix писал(а):Со старым вопросом разобрался. Есть новый вопрос!
Вопрос по потоками (многопоточный демон): можно ли в с++ (если можно то как) при работе с потоками создавать глобальную переменную, доступную всем потокам.
Вопрос можно ли? Однозначна можно. Вопрос как? Тут ответ должен исходить из того что имеем(операционка, библиотеки, личные взгляды)...
Не имею практического опыта программирования под BSD, но точно что posix она должна поддерживать, как ни как it`s UNIX хоть и без бумажки),
поэтому в яндекс posix и он сам тебе предложит posix threads, ну а там 2 ссылка после wiki, https://computing.llnl.gov/tutorials/pthreads/
Кстати, не точно должна, а имеет http://www.freebsd.org/cgi/man.cgi?quer ... .1-RELEASE
Не ругайте меня за столько ссылок, это я для само образования. ;-)

Аватара пользователя
SOBAN
ефрейтор
Сообщения: 62
Зарегистрирован: 2010-06-30 14:21:28
Откуда: Россия:Ростов-на-Дону
Контактная информация:

Re: Сокет-cервер на с/с++ и клиент на ActionScript 2.0 XMLSo

Непрочитанное сообщение SOBAN » 2010-12-08 23:27:48

Разрабатываю под свои нужды что то аналогичное, но столкнулся с проблемой:

Код: Выделить всё

 error: winsock2.h: No such file or directory
при компиляции, читал что путь к winsock2.h в unix отличается от win.
Как правильно указать, что бы отпустило. В интернете шлялся долго. Найти так и не удалось... или это что то с настройкой компилятора уже?
В программе пишу так:

Код: Выделить всё

#include <winsock2.h>

Аватара пользователя
Fastman
ст. лейтенант
Сообщения: 1236
Зарегистрирован: 2006-07-07 10:20:38
Откуда: Минск. РБ

Re: Сокет-cервер на с/с++ и клиент на ActionScript 2.0 XMLSo

Непрочитанное сообщение Fastman » 2010-12-09 2:42:58

Игорь писал(а):Разрабатываю под свои нужды что то аналогичное, но столкнулся с проблемой:

Код: Выделить всё

 error: winsock2.h: No such file or directory
при компиляции, читал что путь к winsock2.h в unix отличается от win.
Как правильно указать, что бы отпустило. В интернете шлялся долго. Найти так и не удалось... или это что то с настройкой компилятора уже?
В программе пишу так:

Код: Выделить всё

#include <winsock2.h>
Вы хоть платформу напишите win/lin/bsd...
а то сообщение в тягостные раздумья вгоняет...
Главное в жизни здоровье и любовь, остальное я все куплю.

Гость
проходил мимо

Re: Сокет-cервер на с/с++ и клиент на ActionScript 2.0 XMLSo

Непрочитанное сообщение Гость » 2010-12-09 3:29:30

winsock2.h
в юниксе такого файла никогда небыло и не будет
у меня смутные сомнения в вашей квалификации

Аватара пользователя
SOBAN
ефрейтор
Сообщения: 62
Зарегистрирован: 2010-06-30 14:21:28
Откуда: Россия:Ростов-на-Дону
Контактная информация:

Re: Сокет-cервер на с/с++ и клиент на ActionScript 2.0 XMLSo

Непрочитанное сообщение SOBAN » 2010-12-09 10:14:25

Гость писал(а):в юниксе такого файла никогда небыло и не будет
у меня смутные сомнения в вашей квалификации
Это точно, там sys/socket.h, совсем башка не варит... :no: