Pourquoi "fork" est-il nécessaire à socat lors de la connexion à un serveur web?
Je suis en train d'essayer de comprendre les connexions tcp entre un navigateur et un serveur web. J'ai un serveur web qui tourne sur ma machine locale, et peuvent parcourir de très bien, comme prévu, à l'aide de localhost:3000 ou 127.0.0.1:3000. (Je suis en cours d'exécution "rails s"et WEBrick.)
Je voulais mettre un logiciel intermédiaire entre le navigateur et le serveur web, et ainsi a commencé à expérimenter avec socat. Le suivant fonctionne très bien:
socat TCP-LISTEN:8080,fork TCP:localhost:3000
Je peux parcourir à localhost:8080 et les choses fonctionnent comme prévu. Cependant, si j'ai omis le ",de la fourche" argument comme ça,
socat TCP-LISTEN:8080 TCP:localhost:3000
le local rails de site web est tout à fait rompu à la recherche dans le navigateur.
Pourquoi est-ce que la fourche argument nécessaire? Pourquoi ne serait-il pas un navigateur <--> connexion du serveur web de travail sans elle?
source d'informationauteur user691307
Vous devez vous connecter pour publier un commentaire.
Sans
fork
socat
accepte une seule connexion TCP, de transférer des données de façon bidirectionnelle entre les deux points de terminaison pour aussi longtemps que la connexion reste ouverte, puis sur quitter. Vous pouvez voir vous-même facilement:socat
dans une fenêtre de terminalsocat
instance.socat
est pas à l'écoute pour de nouvelles connexions plus: il s'est déplacé sur l'entretien de celui qu'il a déjà obtenu.socat
sortie que la connexion est fermée.La
fork
option permet simplement de fourche d'un nouvel enfant pour traiter la nouvellement accepté de connexion alors que le père se remet en attente de nouvelles connexions.socat
's l'utilisation defork()
plutôt que quelque chose de plus sophistiqué, comme preforking ou le regroupement de connexion est la raison pour laquelle vous ne voulez pas mettre en œuvre de haute performance middleware avecsocat
!