web-dev-qa-db-fra.com

Pourquoi SOL_SOCKET est-il utilisé?

Comme indiqué dans la page Linux man

Utilisez cette constante comme argument de niveau pour getsockopt ou setsockopt pour manipuler les options de niveau socket décrites dans cette section

Mais je n'ai pas cette explication. Quel est le but de SOL_SOCKET? Qu'est ce que ça fait?

21
Blake

SOL_SOCKET est la couche socket elle-même. Il est utilisé pour les options indépendantes du protocole.

Vous pouvez lire plus ici .

7
demo.b

Lorsque vous récupérez une option de socket ou que vous la définissez, vous spécifiez le nom de l'option ainsi que le niveau. Lorsque level = SOL_SOCKET, l'élément sera recherché dans le socket lui-même.

Par exemple, supposons que nous voulions définir l'option socket pour réutiliser l'adresse à 1 (on/true), nous passons le "niveau" SOL_SOCKET et la valeur souhaitée.

int value = 1;    
setsockopt(mysocket, SOL_SOCKET, SO_REUSEADDR, &value, sizeof(value));

Cela définira le SO_REUSEADDR dans ma prise à 1.

J'étais coincé là-dessus moi-même, la documentation est extrêmement cryptique. Documentation légèrement plus détaillée ici: http://pubs.opengroup.org/onlinepubs/7908799/xns/getsockopt.html

63
jspacek