Je peux rechercher et j'ai déjà regardé l' entrée wikipedia et dans d'autres endroits, mais même si j'ai une certaine expérience en programmation, je ne comprends pas vraiment le concept. Pouvez-vous me traiter comme un enfant de 10 ans et me donner une explication claire sur la communication par socket?
20
Réponses:
Permettez-moi de vous donner un exemple: dites que vous souhaitez communiquer / discuter avec votre ami, qui ne vit pas à votre adresse. Pour cela, vous devez établir un "canal de communication". Dites, vous voulez faire cette communication en utilisant des téléphones. Vous savez qu'il y a un réseau de lignes téléphoniques dans la ville qui s'étend à chaque maison.
Maintenant, il y a une prise téléphonique dans votre maison et une dans la maison de vos amis. Pour que la communication ait lieu, vous et votre ami devez vous connecter au réseau en branchant votre téléphone sur la prise, aux deux extrémités de la communication. Les prises de programmation sont les mêmes, conceptuellement, que les prises téléphoniques.
En programmation, vous avez deux processus (programmes en cours d'exécution) qui souhaitent communiquer entre eux. Pour cela, ils doivent établir un lien de communication entre eux. Encore une fois, il existe un réseau disponible, ils ont juste besoin de se connecter à ce réseau à l'aide d'une sorte de sockets. Les sockets Unix sont l'un de ces sockets qui fournit cette connectivité / connectabilité au réseau. Ainsi, dans chacun des deux programmes, vous aurez un morceau de code qui fait le travail de connexion au réseau via des sockets.
Le reste sont des détails.
la source
Les sockets Unix sont des sockets bidirectionnelles - tout comme une socket basée sur IP, que vous connaissez probablement, et un peu similaire à un pipe, que vous connaissez probablement.
Ils ont un petit ensemble de propriétés intéressantes:
Essentiellement, ils sont l'équivalent de toute autre prise - ils ont des propriétés légèrement plus intéressantes que les tuyaux, mais ne sont pas radicalement différents autrement. Ils ont généralement une latence IPC plus élevée qu'un tube et souvent des tampons plus importants - bien que vous puissiez régler cela, et cela dépend de la plate-forme.
La dernière propriété intéressante à retenir est qu'ils utilisent le système de fichiers comme espace de noms - ils sont donc comme un canal nommé, plutôt que comme un canal anonyme, dans ce logiciel sans relation préalable pouvant communiquer. (Les sockets d'espace de noms abstraits sont les mêmes, mais le chemin "file" ne doit pas exister.)
Il n'y a rien de plus profond que cela - ils n'ont pas de propriété cachée super secrète qui les rend radicalement différents d'un canal typique ou d'une connexion TCP à localhost.
la source
La programmation des sockets Linux, partie 1: l'utilisation de TCP / IP a très bien fonctionné pour moi. Il commence par une introduction aux réseaux IP et aux couches réseau, puis continue en montrant comment implémenter un serveur et un client d'écho simple en C et en Python.
la source