当客户端通过TCP套接字连接到我的服务器时,我希望获得某种形式的常量值,我可以用它来标识客户端(用C语言),这样当他们将来连接到我的服务器时,我就知道他们是谁了。目前我使用客户端远程IP作为唯一标识符,问题是客户端IP不是一个真正的常量值,可能会根据它们是否连接到VPN或是否具有动态IP而变化。因此,我研究了从TCP套接字获取客户端MAC地址,这似乎是可能的,但获取它非常单调乏味。所以我想知道是否有其他唯一的值可以从TCP套接字中拾取,并在将来的连接中使用该值来识别客户端?
发布于 2017-06-27 05:52:32
发布于 2017-06-27 05:46:02
没有对此的TCP或IP支持,并且转到较低级别不会有任何帮助,因为这些对等点不太可能是所讨论的客户端。这意味着您必须查看更高级别的协议。
例如,如果您使用的是HTTP,则可以在客户端将返回给您的cookie中提供标识号。或者您可以要求客户端提供凭据。这两种方法都有失败模式。
发布于 2017-06-27 09:00:23
这取决于运行客户端程序的操作系统。对于linux/iOS/Windows,可以使用MAC地址或GUIID/UUID;对于基于MCU的RTOS,可以使用接口的MAC地址,也可以使用SPI flash的ID。
https://stackoverflow.com/questions/44768767
复制相似问题