Erreur: «Le terminal de transport est déjà connecté»

J’essaie de développer un petit serveur de discussion avec C.

Pour un simple serveur de discussion,

  • (Noeud final de transport) === (socket)?
  • Dois-je utiliser un socket par client ou puis-je réutiliser un socket pour plusieurs clients? Si c’est le cas, comment ?
  • Y a-t-il un moyen standard de faire cela?
  • Toutes les bonnes références disponibles?

Puis-je avoir des exemples d’implémentation? Je dois utiliser le compilateur gcc et le langage c pour cette affectation.

    Vous avez besoin d’un socket / client et non, vous ne pouvez pas réutiliser des sockets. Si vous devez gérer plusieurs clients, vous pouvez:

    • créez un thread par client et utilisez des E / S bloquantes (de préférence avec timeout).
    • créer un programme à thread unique et utiliser le démultiplexage avec select / poll / epoll / kqueue et utiliser des E / S non bloquantes.
    • utiliser des E / S asynchrones.

    Pour des exemples de communication avec le socket C Le livre Unix Network Programming est probablement la meilleure source. Il a beaucoup d’exemples de programmes et d’explications.

    1. (Noeud final de transport) === (socket)?

    NON. “Endpoint” signifie adresse IP avec numéro de port. Le socket présente une “session” et la session comprend deux points de terminaison, un sharepoint terminaison local (IP, port) et un sharepoint terminaison distant (IP, port).

    1. Dois-je utiliser un socket par client ou puis-je réutiliser un socket pour plusieurs clients? Si c’est le cas, comment ?

    Une prise par session. Cela signifie qu’un serveur doit créer un nouveau socket pour chaque sharepoint terminaison distant (client). Vous pouvez réutiliser le socket quand il n’est plus utilisé. Recherchez l’option de socket SO_REUSEADDR.

    1. Y a-t-il un moyen standard de faire cela?

    Je ne sais pas ce que vous demandez. Un moyen standard pour le service de discussion ou pour le modèle serveur / client? Pour le service de chat, recherchez IRC. Le modèle de programmation serveur / client est bien documenté. Vous pouvez le Google.

    1. Toutes les bonnes références disponibles?

    http://beej.us/guide/bgnet/

    Maintenant, je crois que vous comprenez ce que le message d’erreur signifie.