CFSocket et algorithme de nagle [résolu]

djebee2k4djebee2k4 Membre
décembre 2010 modifié dans Objective-C, Swift, C, C++ #1
Bonjour,

J'utilise l'API CFSocket et j'aimerais désactiver l'algorithme de Nagle. Sous Linux, je sais qu'il existe une constante TCP_NODELAY qui permet cela. Le problème est que cette constante ne semble pas exister en Cocoa.

Comment dois-je procéder pour évitez d'avoir à  attendre les accusés pour envoyer de nouvelles données ? Je souhaite aussi que les données soit envoyées directement plutôt que d'attendre dans un buffer si d'autres données ne doivent pas arriver ?

Si quelqu'un a de la documentation sur le fonctionnement précis de la fonction send() ou CFSocketSendData sur os x cela m'interesse beaucoup ?

Réponses

  • AliGatorAliGator Membre, Modérateur
    23:44 modifié #2
    Je ne suis pas sûr que l'API CFSocket permette d'être aussi fin (quoique, je connais pas toute l'API), mais au pire tu peux tout à  fait créer un socket BSD (socket Linux quoi) et créer un CFSocket à  partir de cette socket native BSD via CFSocketCreateWithNative.

    Du coup soit tu peux tout gérer avec un socket natif (= socket BSD = socket "Linux") et l'utiliser comme sous Linux, soit tu veux utiliser l'API CFSocket parce qu'elle est plus pratique, et du coup tu peux commencer en créant le socket natif/BSD/Linux, le configurer avec TCP_NODELAY, ... et ensuite créer un CFSocket à  partir de ce socket natif ;)
  • djebee2k4djebee2k4 Membre
    23:44 modifié #3
    Merci.

    Je pensais que la constante TCP_NODELAY n'était pas définie car introuvable dans la documentation. En fait elle est bien définie dans le fichier "netinet/tcp.h".
Connectez-vous ou Inscrivez-vous pour répondre.