C从客户端获取唯一标识符(TCP套接字)

时间:2017-06-26 21:12:16

标签: c sockets tcp uniqueidentifier

当客户端通过TCP套接字连接到我的服务器时,我想获得某种形式的常量值,我可以使用它来识别客户端(在C中),所以我知道当他们连接到我的服务器时他们是谁未来。目前我使用客户端远程IP作为唯一标识符,问题是客户端IP实际上不是一个恒定值,并且可能会改变,具体取决于它们是否连接到VPN或是否具有动态IP。所以我考虑从TCP套接字获取客户端MAC地址,看起来好像很可能,但是非常繁琐。所以我想知道是否有任何其他独特的值我可以从TCP套接字中提取并使用该值来识别未来连接中的客户端?

3 个答案:

答案 0 :(得分:3)

让客户端生成并发送GUID / UUID,并将其存储在客户端以便后续连接。

128位GUID的碰撞几率非常小。

生成它们的API随时可用。

答案 1 :(得分:1)

对此没有TCP或IP支持,并且进入较低级别将无济于事,因为这些用户不太可能是客户端。这意味着您必须查看更高级别的协议。

例如,如果您使用的是HTTP,则可以在客户端将返回给您的cookie中提供标识号。或者您可以要求客户提供凭据。这两种方法都有失败模式。

答案 2 :(得分:-3)

这取决于客户端程序运行的操作系统。对于linux / iOS / Windows,您可以使用MAC地址或GUIID / UUID,对于基于MCU的RTOS,它取决于您的SDK,可以使用接口的MAC地址或SPI闪存的ID。