2012-07-03 6 views
0

Ai-je besoin d'un serveur pour fonctionner avec les sockets? Puis-je envoyer directement des paquets à un autre client et le recevoir sans que l'hôte soit un serveur?A propos des sockets réseau

+0

Le serveur est une entité (hw ou sw) qui expose un service. Le client est l'entité correspondante qui demande ce service. Une machine avec une demande d'acceptation de socket est un serveur. Une machine envoyant une requête à cette socket est un client. C'est tout. –

Répondre

0

Oui, vous pouvez le faire. Même sur le même ordinateur. Assurez-vous simplement qu'ils utilisent le même port et que le client essaie de se connecter à localhost. J'utilise cette technique régulièrement pour tester mes applications réseau.

+0

Donc, je pourrais faire un programme de chat direct sans avoir à héberger un serveur? – user1499944

+0

Oui, vous pourriez ... –

0

Deux ordinateurs peuvent parler, mais l'un doit être un serveur et l'autre le client. Ils peuvent échanger des rôles et chacun peut être l'opposé de l'autre.

+0

Mais ils peuvent toujours être des ordinateurs ordinaires sans héberger un serveur pour fonctionner comme un seul? – user1499944

0

La distinction Client/Serveur dans la programmation des sockets n'est pas aussi précise qu'elle le semble. Fondamentalement, cela a à voir avec la façon dont les deux machines se connectent. Le serveur utilise bind, listen et accept pour attendre constamment les connexions entrantes. Le client doit connaître l'adresse IP du serveur. C'est pourquoi les URL et les DNS existent pour fournir un nom facile à retenir qui correspond à l'adresse IP d'un serveur.

Une fois le client connect() et accept() édité par le serveur, les différences sont à peu près terminée. Le client et le serveur peuvent à la fois send() et recv() octets quand ils le souhaitent, et il n'y a aucune restriction sur les données.

Tout ordinateur peut être un serveur. Vous pourriez avoir un ordinateur portable 386 en tant que serveur et une toute nouvelle machine à double rack Xeon en tant que client.