注意:本题给分按照实现的程度来评分,你写的任何一部分代码都有可能得分,请不要轻易放弃。
请实现一个基于websocket协议的,具有一定可靠性的,假的web聊天室服务器。
之所以说是假的,是因为完整的支持多用户的聊天服务器一晚上完整实现不太现实,这里我们只要求你实现基本的单人发送和接收信息即可。
你需要在如下地址下载我们提供的源代码文件:
http://120.78.181.64/fake-chatting-room.zip
- Client
打开gui/index.html
,可以看到已经实现好的用户界面。相关的客户端函数在gui/index.js
中,这些文件中的函数可以作为你接下来完成任务的参考。所有GUI相关的文件中,除了接收函数mainReceive
和发送函数mainSend
之外不允许修改。
在开始答题前,请在gui/index.js:08
填上你所使用的端口。
- Protocol
这里使用的是标准的websocket协议,关于协议相关的内容细节,请自行Google学习如何实现。
- Server
打开server.h
,你可以看到我们已经给出了未完成的头文件,包括可能用到的一些宏,关于websocket结构体也给出了相关提示。你需要做的是在这里定义好你使用的端口,相关结构体和引用一些你想用的头文件(可以使用一些其他的库,但涉及到协议的细节必须自己实现)。其他的(例如一些长度参数)请勿更改。
接下来,你只需要完成server.c
,实现和html前端通信的功能。
语言限定C/C++
,由于不同人用到的库不一样,请自行完成编译。
完成之后,自行拿用户界面测试即可。
具体的要点如下:
- 实现websocket协议的加密/解密/发送/接收
- 建立客户端与服务器的连接,这里的连接是指达到可以互通信息的状态
- 服务器将用户发送的信息发送回客户端,显示在聊天窗口上。
- 在客户端断开连接(例如关闭浏览器)后重新打开,还能与服务器建立正常连接。
- 在客户端断开连接一段时间后,服务器应关闭与这个客户端的连接。
- Shakehands
- Encode&Decode
- Parsing packets
这里的评分标准只是一个百分比线,任何你实现的一部分有用的代码都可能得分。
- 简单的实现了websocket的握手 -- 50%
- 实现了要点1.2.3 -- 60%
- 要点4.5再各占20%
将以上所有内容打包为一个.tar.gz
文件,命名为websocket.tar.gz
,作为最终的提交文件。
- 如果对我们提供的源代码的正确性和可用性(注意:仅限我们提供的部分)有疑问,请及时与现场监考人员联系。
- 请不要抄袭,因为接下来的面试可能也会问到你具体的细节。
http://zxcpyp.com/network/2017/09/07/Websocket
这里有着一些简单的协议内容解析和握手部分的实现代码 [By. zxcpyp]