找回密码
 立即注册
搜索
查看: 3610|回复: 1

[软件] 【求助】C++实现的WebSocket Server握手失败,这是啥情况T.T

[复制链接]
发表于 2010-12-8 19:15 | 显示全部楼层 |阅读模式
Server用的是这一段C++代码
http://hi.baidu.com/_sivis_/blog/item/7362889ac15addbec9eaf4a1.html

Client用的是这一段HTML5代码
http://blancer.com/tutorials/69066/start-using-html5-websockets-today/

具体的服务器地址之类的已经根据自己的情况修改了,C++代码中copy时产生的符号问题比如& lt换成<之类的也都做完了……总之编译调试都正常,两边也能成功进行握手信息交换

问题是如果用原Server代码中的握手信息:
     "HTTP/1.1 101 Web Socket Protocol Handshake\r\n"
     "Upgrade: WebSocket\r\n"
     "Connection: Upgrade\r\n"
     "WebSocket-Origin: http://localhost:808\r\n
     "WebSocket-Location: ws://localhost:808/ws\r\n\r\n"
进行握手,Client端的socket会永远保持connecting状态
查了一些其他的demo,有些比这个多一行
     "WebSocket-Protocol: sample\r\n"
但是加了这一行之后Client的socket会立刻从connecting进入closed状态……都不带进入open的,应该是直接握手失败了

具体地,我又加了两行输出client ip的代码测试了一下,发现在不添加那一行Protocol的时候,服务器可以正常发送完握手信息,然后调用CreateThread创建线程,直到这里都一直可以检测到client ip,只是client一直保持connecting无法完成握手;在添加那一行之后,握手信息发送完毕时依然可以正确检测到client ip,但接下来调用CreateThread之后socket立即就断开了,显示client ip = 0.0.0.0

不知道是什么情况= =
回复

使用道具 举报

     
发表于 2010-12-8 21:17 | 显示全部楼层
应该是 Sec-WebSocket-Protocol 吧

http://www.whatwg.org/specs/web-socket-protocol/

我不懂WebServer编写,随便说说的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-9-17 12:29 , Processed in 0.027425 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表