Je peux voir qu'il ressemble à un alias pour un pointeur non signé int, non? Est-ce juste comme un pointeur dans la mémoire? À quoi serait-il en train de pointer? Est-ce qu'il pointe vers une structure? Si oui, comment cette structure est-elle définie? Est-ce juste un nombre qui est utilisé par les fonctions de socket et ne correspond pas à une adresse de mémoire?Quel est le type de SOCKET?
Répondre
Dans Win32, un type de données SOCKET
est la même que celle d'un HANDLE
, qui est un entier utilisé pour désigner une structure de données du noyau d'une sorte. Cette structure de données du noyau est "opaque", ce qui signifie que les programmes d'application n'ont pas besoin (et ne peuvent en fait pas) voir les composants internes de la structure. Tous les accès à Win32 SOCKET
se fait via les fonctions de l'API Winsock.
Notez que dans Win16, un SOCKET
n'était pas la même chose car il n'y avait pas de type Win16 HANDLE
. Toutefois, Win32 a conservé le même nom de type pour la compatibilité source.
de Wikipedia-
En général, un descripteur de fichier est un indice pour une entrée dans une structure de données résidant dans le noyau contenant les détails de tous les fichiers ouverts . Dans POSIX, cette structure de données est appelée table de descripteur de fichier, et chaque processus a sa propre table de descripteur de fichier . L'application utilisateur transmet la clé abstraite au noyau via un appel système, et le noyau accède au fichier au nom de l'application , en fonction de la clé. L'application elle-même ne peut pas lire ou directement la table des descripteurs de fichier . link
Vous pouvez consulter the Linux source for socket.h, par exemple. Bien que dans le cas des sockets (dont le type n'est pas réellement décrit dans socket.h), un socket est un descripteur de fichier, pas très différent du retour de open
en C (que vous n'utilisez pas dans la programmation au jour le jour)). Quant à ce qu'est un file descriptor: à un niveau très élevé, c'est typiquement un int que l'OS traduit en un moyen de communiquer avec un objet fichier, ou un objet socket pour les communications réseau, ou un canal pour communiquer entre processus ...
- 1. LINQ: quel est le type d'un résultat?
- 2. java tcp ip programmation de socket quel que soit le type de proxy
- 3. Quel est le point de `void func() throw (type)`?
- 4. Quel est le type de données C# pour WINOLEAPI?
- 5. Quel est le type par défaut d'un attribut?
- 6. Quel type d'entrée est le moins vulnérable aux attaques?
- 7. Quel est le contraire de Type.MakeByRefType
- 8. Quel est le code équivautant de VB.Net pour le code de type anonyme?
- 9. quel est le codage?
- 10. Quel type de données utiliser?
- 11. Quel est le problème avec ce HQL? "Aucun type de données pour le noeud"
- 12. Quel type de champ est le champ Set Timer sur le Blackberry?
- 13. Quel type de type de données peut être arrondi?
- 14. Quel type de données est dans une constante de type "enum"? Comment l'ajouter à un NSArray?
- 15. Quel type de chiffrement est le "Moteur par défaut" de SQL Compact?
- 16. Quel est le type de données pour un mot de passe dans PostgreSQL?
- 17. Quel type de liste/collection est le mieux à utiliser dans un contrat de données WCF?
- 18. Quel est le type de données de "select 123.866" dans SQL Server 2005?
- 19. Quel est le type des attributs booléens dans les entités de données de base?
- 20. Quel est le nom de ce type de graphique acyclique dirigé?
- 21. Quel hôte utiliser pour créer une socket UDP en python?
- 22. Dans Flex3, quel type est une propriété d'objet?
- 23. Quel est un bon serveur de socket Flash pour un débutant?
- 24. Iphone Development: Quel est le
- 25. De quel type est le fichier d'application dans un appel à COMAdminCatalog.InstallApplication
- 26. Quel est le type de données UInt32 dans Visual Basic .NET?
- 27. Quel est le type de système pour un tableau d'octets - asp.net?
- 28. Quel est le type de colonne équivalent sqlalchemy pour 'money' et 'OID' dans Postgres?
- 29. Quel est le meilleur type de données pour les devises dans MySQL?
- 30. Quel est le nom interne du 'type' de fonctions, en Python?
"Handle" définit ce que c'est, malgré ce n'est pas une poignée Win32 régulière. La plupart des HANDLE sont des pointeurs vers les objets qu'ils représentent, mais pas avec SOCKET. C'est plus comme une pièce d'identité qu'une poignée. – Havenard
Tous les HANDLE Win32 sont des index d'entier dans la table d'objets du noyau; ils ne sont pas des pointeurs en tant que tels. –