我已经设置了一个C++服务器/客户端环境,并尝试从服务器向客户端发送time_t值(在任何服务器中都很有用).但是我很头疼:time_t似乎没有任何尺寸规格.我想知道什么是通过网络发送time_t最安全(更便携)的方式.
这是一个小例子:
time_t T = time(NULL);
unsigned char * P = (unsigned char *)&T;
// ... Convert it to network byte order, etc.
// Here, 's' would be the socket, and 'S'
// the size of the data that is going to
// be sent
send(s, P, S, 0);
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
我如何处理这两个问题,以便我可以在(几乎)任何架构之间安全地发送它?
提前致谢.
编辑:看到相同的三个答案后,我觉得最好回答这里.对不起,我之前没有说清楚.我更喜欢用'纯'字节发送它,虽然将它作为字符串发送不是问题.据我了解,我需要(再次)记住主机系统中time_t数据类型的签名和大小,不是吗?(谢谢,对不起)
我想用C++构建一个可移植且高效的服务器; 它将有许多客户端同时尝试连接,因此它必须能够并行处理每个请求.
我一直在努力寻找多线程的文档,指南等.我发现了很多关于POSIX Pthread的内容,但对于GNU Pth几乎没有(除了gnu.org中的官方手册).
那么,有人能解释一下POSIX Pthread和GNU Pth之间的区别吗?请,我希望回复不是维基百科内容的副本(请记住,我是多线程的绝对新手).我希望我的服务器在所有基于*nix的系统之间可移植和高效,远离使用繁重的fork().
谢谢你的帮助.
PS:我认为最好在这里问一下:Windows怎么样?Pthreads或Pth是选项吗?如果没有,该操作系统的API是什么?
我目前正在学习C中的基本网络,我对互联网的"模糊"部分感兴趣:秘密协议.
假设我开发了一款多人在线游戏.我会设计自己的协议来打包和解包数据,因此客户端和服务器都可以正确地发送,接收和解析信息(例如:位置数据包,施法咒语......等等).当然,我不希望该协议属于公共领域,因为任何想在我的服务器上制作"坏东西"的人都能够做到这一点.但我想保留我的项目免费软件.
那我该怎么办?你能告诉我如何保持我的假设项目开源,而不是让它不安全吗?
提前致谢