这里解释如何创建套接字组并将其加入套接字组(WSASocket文档)。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms742212(v=vs.85).aspx
还解释了套接字组中的所有套接字必须使用相同的协议连接到同一主机端点。但是,我不明白我何时或为什么要这样做?这有什么特别的好处吗?这个功能是否仅对客户端应用程序(如Web浏览器)有用,还是我可以在服务器中使用它?
答案 0 :(得分:0)
您描述的内容仅适用于约束组。 无约束组可以包含不同类型/协议的套接字。
如果你向下看documentation,它会解释实际用于哪些套接字组:“向底层服务提供者指示一组特定的套接字是相关的,并且由此形成的组具有某些属性。属性包括组内各个套接字的相对优先级以及组服务质量规范“。
MSDN上还有其他文档提到套接字组:
Socket Groups in the Windows Sockets 2 SPI
保留所有套接字组的使用。
lpGQOS [in] 保留供套接字组以后使用。指向套接字组的FLOWSPEC结构的指针(如果适用)。
lpfnCondition [in] 可选的,应用程序指定的条件函数的地址,它将根据作为参数传入的调用者信息做出接受/拒绝决定,并可选择通过为此函数的结果参数g分配适当的值来创建或加入套接字组
...
lpGQOS参数是保留的,应为NULL。 (保留供将来与套接字组一起使用)引用调用者要创建的套接字组的FLOWSPEC结构,每个方向一个,后跟任何其他特定于提供者的参数。 lpGQOS的NULL值表示没有调用者指定的组服务质量。如果要进行协商,可以返回服务质量信息。
除非您在代码中实际处理QOS,否则通常不会使用套接字组。