Python中文
首页
教程
问答
标签
搜索
登录
注册
websocket获取奇怪的字符
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>嗨,我一直在测试websockets,到目前为止我已经把它连接起来了。但是当我开始向服务器发送数据时,我得到了一堆奇怪的字符。在</p> <p>(从搜索中得到这些代码)</p> <p>这是服务器:</p> <pre><code>import socket import re from base64 import b64encode from hashlib import sha1 websocket_answer = ( 'HTTP/1.1 101 Switching Protocols', 'Upgrade: websocket', 'Connection: Upgrade', 'Sec-WebSocket-Accept: {key}\r\n\r\n', ) GUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('127.0.0.1', 8999)) s.listen(1) client, address = s.accept() text = client.recv(1024) print "RECV----------------------------------" print text key = (re.search('Sec-WebSocket-Key:\s+(.*?)[\n\r]+', text) .groups()[0] .strip()) response_key = b64encode(sha1(key + GUID).digest()) response = '\r\n'.join(websocket_answer).format(key=response_key) print "SEND----------------------------------" print response client.send(response) while 1: try : print "SEND----------------------------------" client.sendall('hello from server') print "RECV----------------------------------" print client.recv(1024) except : print "except" break </code></pre> <p>客户如下:</p> ^{pr2}$ <p>点击“连接”按钮后,我得到的是:</p> <pre><code>RECV---------------------------------- GET / HTTP/1.1 Upgrade: websocket Connection: Upgrade Host: localhost:8999 Origin: null Sec-WebSocket-Protocol: echo-protocol Sec-WebSocket-Key: v6Fu1rJURofc7iIPbeaw0Q== Sec-WebSocket-Version: 13 Sec-WebSocket-Extensions: x-webkit-deflate-frame Cookie: BG_PREFS=searches_includeapocrypha@no&fontsize@medium&language@en&default_version_display@all&default_version@SND&default_ version_overrides@no&quicksearch_search@&pslookup_language1@en&pslookup_language2@&pslookup_language3@&pslookup_language4@&pslooku p_language5@&pslookup_showmoresearches@closed&pslookup_showversions@open&pslookup_showmoreversions@closed&pslookup_showoptions@ope n&pslookup_showfootnotes@yes&pslookup_showxrefs@no&pslookup_showwoj@no&pslookup_showversenums@yes&pslookup_showheadings@yes&pslook up_showindent@no&pslookup_multilayout@columns&pslookup_multisort@passage&pslookup_embed-versenum@true&pslookup_embed-xref@false&ps lookup_embed-footnote@false&pslookup_embed-heading@false&keysearch_search@&keysearch_language1@en&keysearch_language@en& SEND---------------------------------- HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Protocol: echo-protocol Sec-WebSocket-Accept: qVkmFtRs1w8OUwZSe5nMpTWNxbI= SEND---------------------------------- RECV---------------------------------- keysearch_bookset@&keysearch_spanbegin@1&keysearch_spanend@73&keysearch_limit@none&keysearch_startnumber@1&keysearch_searchtype@al l&keysearch_showversions@open&keysearch_showmoreversions@closed&keysearch_showoptions@open&keysearch_displayas@long&keysearch_resu ltspp@25&keysearch_sort@bookorder&keysearch_wholewordsonly@no&commentary_source@1&topindex_source@1&topindex_search@&topindex_sear ch_type@any&topindex_resultspp@25&audio_source@3&audio_book@&audio_chapter@&dict_source@1&dict_search@&dict_search_type@any&pslook up_search@>>>>&pslookup_version@NIV>>>>&undefined&keysearch_version@31>>>>; CoreID6=83844698672113373932637&ci=90320803; __atuvc=2 |20 </code></pre> <p>握手似乎很好,是有联系的。 然后当我从客户端发送文本“test”时,我得到了这个。在</p> <pre><code>üäQk╩¼%♫╣╪ </code></pre> <p>这跟字符编码有关吗? 我无法获取发送到服务器的“test”字符串。 我在客户端也没有得到任何消息。在</p> <p>注: 我在chrome19上测试了客户端。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>根据RFC,客户机发送的不是文本数据,而是<a href="http://tools.ietf.org/html/rfc6455#section-5" rel="nofollow">binary frames</a>。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在乒乓球比赛中预测球的轨迹,对于AI球拍预测?
5 回答
如何在乒乓球游戏中阻止球
2 回答
如何在乘法和模中不乘空间?
4 回答
如何在乘法和除以2个不同的数字之间进行交换?
10 回答
如何在也是数据一部分的单个字符上拆分大字符串
4 回答
如何在乾草堆中找到針,有更好的解決方案嗎?
4 回答
如何在事件wxWidgets中传递自定义数据
9 回答
如何在事件中使用lambda i=i?
8 回答
如何在事件中心只接收最近的数据
4 回答
如何在事件发生之前保持云函数运行?
2 回答
如何在事件发生后使页面重定向到同一页面
1 回答
如何在事件回调之间保持python生成器的状态
2 回答
如何在事件处理程序(pythonsocket、sphinx)中保留docstring
3 回答
如何在事件处理程序中更改wxRichTextCtrl的光标位置?
2 回答
如何在事件处理程序中访问外部对象?
8 回答
如何在事件循环中将协程打包为正常函数?
4 回答
如何在事件循环之外运行协同程序?
1 回答
如何在事件循环结束时为并发未来的所有线程调用类方法?
10 回答
如何在事件文件中只保留一份摘要?
5 回答
如何在事件模板中添加事件
3 回答