Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
OrmaJever
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
#1

WebSocket server c++ - C++

04.06.2014, 17:27. Просмотров 1195. Ответов 0
Метки нет (Все метки)

Тема для тех кто сталкивался с вебсокетами.
Пишу сервер протокола WebScoket, пакеты в протоколе имеют свою структуру http://learn.javascript.ru/websockets#описание-фрейма, я написал метод который создаёт такой пакет
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
qint64 Client::writePack(const char *data, char type)
{
    char *pack = (char *)malloc(2);
    unsigned char headLen = 2;
    unsigned long long length = 0;
    while(data[length] != '\0') ++length;
 
    pack[0] = (1<<7) | type;
    pack[1] = 0;
 
    if(length <= 125)  {
        pack[1] |= length;
    } else if(length <= 65536) {
        pack[1] |= 126;
 
        char len[2];
        len[0] = ( length >> 8 ) & 255;
        len[1] = ( length ) & 255;
 
        pack = (char *)realloc(pack, 4);
        memcpy(pack+headLen, len, 2);
        headLen += 2;
    } else if(length > 65536) {
        pack[1] |= 127;
        pack = (char *)realloc(pack, 10);
 
        char len[8];
        len[0] = ( length >> 56 ) & 255;
        len[1] = ( length >> 48  ) & 255;
        len[2] = ( length >> 40 ) & 255;
        len[3] = ( length >> 32  ) & 255;
        len[4] = ( length >> 24 ) & 255;
        len[5] = ( length >> 16  ) & 255;
        len[6] = ( length >> 8 ) & 255;
        len[7] = ( length ) & 255;
 
        memcpy(pack+headLen, len, 8);
        headLen += 8;
    }
 
    pack = (char *)realloc(pack, headLen+length+1);
    memcpy(pack+headLen, data, length+1);
    return write(pack);
}

И он даже работает, но только когда длина данных <= 125байт, как только передаю данные больше 125байт браузер его просто игнорит. Я проверял первые 4 байта, в них лежи всё как нужно 126 во втором байте, 0 в 3 и 130 в 4 (для длины 130байт), дальше сами данные, но сервер его просто игнорит, при этом для длины меньше 126 байт браузер принимает всё отлично. Уже второй день голову ломаю, помогите кто чем может

Добавлено через 3 часа 28 минут
я всё ещё надеюсь что есть те кто работал с веб сокетами
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2014, 17:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос WebSocket server c++ (C++):

WebSocket + Perl server - Perl
Никак не могу отладить, не пойму где косяк в сервере или клиенте вот код страницы &lt;!DOCTYPE HTML&gt; &lt;html&gt; &lt;head&gt; &lt;meta...

Хостинг ругается на websocket server - PHP Сети
Написал чат (большинство кода скачал с простора интернета, но разобрал на 99% код, мучался 4 дня) websocket server и клиента на php, на...

Серверы LAMP + mail server + internet server + file server - Серверы
Доброго времени дня, уважаемые форумчане. Необходима помощь в подборе железа для сервера. Более всего нужны рекомендации по частоте...

Websocket - Delphi
Здравствуйте. Пытаюсь автоматизировать некий процесс в сети. При ручном исполнении браузер отправляет get запрос по протоколу HTTP: ...

WebSocket - C++
Есть сервер до которого можно достучаться по определенному ip:port написанный на С++. Есть вебклиент, который использует webSocket. Как...

WebSocket - Node.js
Как использовать websocket на Node.js? Если писать так var WebSocketServer = require('websocket').server; то будет ошибка ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2014, 17:27
Привет! Вот еще темы с ответами:

WebSocket - Программирование Android
Есть переписка между 2 пользователями, общий чат, где много пользователей и комментарии к фото. Посоветуйте, использовать 1 websocket для...

Websocket - jQuery
&lt;script type=&quot;text/javascript&quot;&gt; var onWindowLoad = function() { $(&quot;#status&quot;).fadeOut(); $(&quot;#preloader&quot;).fadeOut(&quot;slow&quot;); ...

Реализация WebSocket - Язык D
На Java есть вот такая, библиотечка Есть ли, что-то подобное для ?

Чат на websocket - PHP Сети
Не знаю, в правильном ли разделе создаю тему, но вопрос следующий. Меня интересует запуск, например, чата используя протокол websocket. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru