套接字是唯一的吗?
Posted
技术标签:
【中文标题】套接字是唯一的吗?【英文标题】:Is socket unique? 【发布时间】:2014-11-05 11:25:09 【问题描述】:Winapi SOCKET 是 32 位整数或 64 位整数(取决于 Windows),所以我想将它用作客户端的 ID(在客户端 - 服务器应用程序中)。我的问题 - 以整数为基础的套接字是唯一的整数值吗?
【问题讨论】:
仅在服务器端恕我直言。您不应该对客户端产生任何影响。 怎么可能不是独一无二的呢?如果存在重复,则操作系统无法区分不同的套接字(在单个进程中)。你也不能。 完全不清楚你的意思。你所说的独特是指只出现在世界上的那个地方吗?或者在那个过程中?那一刻?在整个过程的生命周期内? 【参考方案1】:我的问题 - 以整数形式转换的套接字是唯一的整数值吗?
它对于它运行的进程来说是独一无二的。
但是,您需要考虑同一客户端可能向您打开多个连接的可能性。可能您正在寻找getpeername()
?
【讨论】:
我会将它用作服务器端的客户端 ID(用于连接的客户端)。所以我只需要服务器进程的唯一性。我认为在整数上转换的套接字足以识别用户。感谢您的回答。 仅当每个客户端 IP 地址只有一个用户和一个连接时。以上是关于套接字是唯一的吗?的主要内容,如果未能解决你的问题,请参考以下文章
对于 UDP 套接字,在 close() 返回的那一刻,IP 地址是无限的吗?