为了我的科学合作,我写了一个C ++服务器/客户端(用于linux的终端服务器,以及使用Qt的跨平台GUI客户端),主要用于从世界各地的多个客户端传输数据以将其存储在一台服务器上分析(非常像LIGO和Virgo捕获引力波)。对于通信低级协议,我使用了boost::asio::ssl。
“奇怪”部分:在我的程序中,我从头开始在服务器和客户端之间创建自己的半双工消息传递协议。消息传递是字符串形式,包含协议的版本,计算机的字节顺序,消息的长度,消息的类型(登录/文件/错误/等...),用于验证完整性的MD5哈希值。转移数据。当我说这样做时,我在Stackoverflow聊天中受到高度批评。受到特别批评的部分是:编写我自己的消息传递协议。
现在我创建了这个,我知道应该有更好的协议已经写好我不应该从头开始重写。但是,我想学习如何自己做这个,我做了,程序有效,我的合作很满意,天空是蓝色的,鸟儿在唱歌。
我的问题:如果我要重新编写此程序,我应该使用哪种库?我正在寻找一个协议,使用它我可以发送消息/数据并让服务器响应消息/数据,包括用户名/密码,以便在传输任何通信之前对用户进行身份验证?你会怎么做的?
PS:请考虑这个问题来自初学者写的网络和互联网程序。请不要犹豫,询问更多细节。