Форум программистов, компьютерный форум CyberForum.ru

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

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

WebSocket server c++ - C++

04.06.2014, 17:27. Просмотров 1140. Ответов 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 минут
я всё ещё надеюсь что есть те кто работал с веб сокетами
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2014, 17:27     WebSocket server 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, на...

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

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

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

Delphi и Websocket - Delphi
Вопрос таков, как реализовать подключение к ВебСокету по протоколу 07. На 1-ом скрине отправляется запрос и в ответе он получает фрагмент...

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

Работа с WebSocket-ом - C# WCF
Не организовывал ли кто-нибудь обмен данными через WebSocket? Сложность и непонятность заключается в том, что при тестировании моей...

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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