我是靠谱客的博主 搞怪机器猫,最近开发中收集的这篇文章主要介绍C/C++ 实现websocket客户端,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

网上有一个现存的开源库,websocketpp,但好像不太适合目前开发的项目,好在是开源库,可以找找源代码来整一波,fork一波websocketpp,其实整个东西大概就是一个websocket头协议,网上有太多讲websocket头协议,我只提几个在开发时要注意的骚东西!!!

1.注意在进行握手的头协议时,定要填写Origin头协议,Host也要填,可以这样做:
Origin:http://www.Ip:port.com
Host:Ip:port
2.注意客户端向服务器发送要使用Mask,服务器返回是不用mask的!!至于如何mask网上也有
3.建议不分包发送。。不然麻烦的很
好的,就不贴代码了,有兴趣的可以找我要~
4. 握手要客户端随机生成个16字节,然后再base64加密,然后发给服务器,服务器传回的时候带着再加密的东西,我们就通过这个加密串来判断是不是与客户端一致来是否握手,把客户端发送的加密串先+258EAFA5-E914-47DA-95CA-C5AB0DC85B11″,然后再sha1,再将字节转换成网络字节顺序 然后再base64加密,与服务器返回的匹配一波,如果等就来handshake!!代码如下:

char buff[128]={0};
sscanf(pFind,"Sec-WebSocket-Accept: %srn",buff);
char buff2[128]={0};
sprintf(buff2,"%s%s",m_sendKey,WEBSOCK_KEY_HANDSHAKE);
uint32 msg[5]={0};
SHA1::Get(buff2,strlen(buff2),msg);
for (int i = 0; i < 5; i++)
    msg[i] = htonl(msg[i]);           //将字节转换成网络字节顺序  
Base64Util::Encode(msg,20,buff2);
if(0 == strcmp(buff,buff2))
{                        
//握手成功!@!
}
else
{           
    //握手失败!@!
}

相应的坑:实现websocket的一个坑,小心别像我一样掉下去

更多文章:http://blog.csdn.net/what951006
powered by:小乌龟在大乌龟背上~

最后

以上就是搞怪机器猫为你收集整理的C/C++ 实现websocket客户端的全部内容,希望文章能够帮你解决C/C++ 实现websocket客户端所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部