Socket et les descripteurs de fichiers
Je suis en train d'apprendre à propos de la programmation réseau sous Unix et tentent de comprendre le concept de socket et les descripteurs de fichiers. De ce que j'ai compris un descripteur de fichier est simplement une position dans un tableau de pointeurs (descripteur de Fichier de la table?) et ces pointeurs pointent vers un fichier quelque part dans la mémoire.
Ne socket descripteurs de partager ce tableau avec les descripteurs de fichier, mais le pointeur au lieu de cela renvoie à une prise de courant. Ou est-il quelque chose d'autre qui n'est utilisé que pour les sockets?
Est ce tableau unique pour chaque application/?
OriginalL'auteur Carlj901 | 2012-11-14
Vous devez vous connecter pour publier un commentaire.
Oui, les prises sont également des indices dans la même table que les fichiers. Au moins pour les systèmes UNIX (comme Linux et OSX), Windows est différent, c'est pourquoi vous ne pouvez pas utiliser, par exemple,
read
etwrite
recevoir et envoyer des données.Chaque processus a son propre "fichier" table de descripteur.
Oui, genre de. Le descripteur de fichier (tel que retourné par la
open
ousocket
) est un indice dans ce tableau ou un pointeur, ces pointeurs peuvent ensuite pointer vers différentes structures en fonction de si c'est un fichier ou un socket.OriginalL'auteur Some programmer dude
Socket n'est rien, mais un fichier dans le système d'exploitation UNIX. Même tout ce qui est traité comme un fichier dans le système d'Exploitation UNIX. Chaque fois que nous créons un socket une entrée est créée dans la table de descripteurs de fichier qui contient i/o standard et standard des erreurs et d'autres détails. Le descripteur de fichier comporte comme un pointeur vers le Fichier de la Table qui contient des informations sur les mesures à prendre je.e de lecture, d'écriture, etc, et il contient des pointeurs vers la table des inodes de ce fichier particulier, et comme vous le savez peut inode contient tout le nécessaire deatils d'un fichier.
OriginalL'auteur Navneet
Il n'y a pas de différence entre le connecteur et les descripteurs de fichiers. Les Sockets sont juste forme particulière de fichier. Vous pouvez utiliser les mêmes appels à read() et write (), qui sont utilisés sur les descripteurs de fichier.
La seule différence
send() et write() est la présence de drapeaux. Avec un zéro
argument flags, send() est équivalent à écrire().
OriginalL'auteur