套接字是唯一的吗?

Posted

技术标签:

【中文标题】套接字是唯一的吗?【英文标题】:Is socket unique? 【发布时间】:2014-11-05 11:25:09 【问题描述】:

Winapi SOCKET 是 32 位整数或 64 位整数(取决于 Windows),所以我想将它用作客户端的 ID(在客户端 - 服务器应用程序中)。我的问题 - 以整数为基础的套接字是唯一的整数值吗?

【问题讨论】:

仅在服务器端恕我直言。您不应该对客户端产生任何影响。 怎么可能不是独一无二的呢?如果存在重复,则操作系统无法区分不同的套接字(在单个进程中)。你也不能。 完全不清楚你的意思。你所说的独特是指只出现在世界上的那个地方吗?或者在那个过程中?那一刻?在整个过程的生命周期内? 【参考方案1】:

我的问题 - 以整数形式转换的套接字是唯一的整数值吗?

它对于它运行的进程来说是独一无二的。

但是,您需要考虑同一客户端可能向您打开多个连接的可能性。可能您正在寻找getpeername()

【讨论】:

我会将它用作服务器端的客户端 ID(用于连接的客户端)。所以我只需要服务器进程的唯一性。我认为在整数上转换的套接字足以识别用户。感谢您的回答。 仅当每个客户端 IP 地址只有一个用户和一个连接时。

以上是关于套接字是唯一的吗?的主要内容,如果未能解决你的问题,请参考以下文章

对于 UDP 套接字,在 close() 返回的那一刻,IP 地址是无限的吗?

tcp连接是基于socket通信的吗

默认情况下,UDP(Java 或其他)是全双工的吗?

QTcpSocket真的是全双工的吗?

Slick 3.0 在数据库驱动程序级别是反应式/异步的吗?对于哪些数据库?

ReactPHP 真的是异步的吗?