Réglage de la prise d'envoyer/recevoir délai de moins de 500ms .NET
Selon la documentation MSDN il n'est pas possible de définir de Socket.SendTimeout à une valeur inférieure à 500 ms: http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.sendtimeout Même règle est valable pour la Socket.ReceiveTimeout (même s'il n'est pas mentionné dans la documentation MSDN, c'est vrai, que les deux cas ont été testés pratiquement).
Existe-il d'autres façons délai d'attente pour une prise opération de réception si, par exemple, prend plus de 10ms à remplir?
Quel est le problème avec le réglage de
Cochez cette stackoverflow.com/questions/9327326/socket-receivetimeout
J'ai fait un test avec la Prise.ReceiveTimeout mis à 10m. Tous échoué après environ 500ms, donc je suppose que la même règle s'applique ici aussi, même s'il n'est pas mentionné dans la documentation.
oui, mais il tourne un nouveau thread.
Pourquoi voudriez-vous d'un délai d'attente de moins de 500ms? Avec des temps de latence et le potentiel de trafic réseau, beaucoup plus faible que 500ms et vous avez la possibilité d'avoir beaucoup de faux délais d'attente.
Socket.ReceiveTimeout
à 10ms?Cochez cette stackoverflow.com/questions/9327326/socket-receivetimeout
J'ai fait un test avec la Prise.ReceiveTimeout mis à 10m. Tous échoué après environ 500ms, donc je suppose que la même règle s'applique ici aussi, même s'il n'est pas mentionné dans la documentation.
oui, mais il tourne un nouveau thread.
Pourquoi voudriez-vous d'un délai d'attente de moins de 500ms? Avec des temps de latence et le potentiel de trafic réseau, beaucoup plus faible que 500ms et vous avez la possibilité d'avoir beaucoup de faux délais d'attente.
OriginalL'auteur donatasm | 2012-05-28
Vous devez vous connecter pour publier un commentaire.
La réponse est simple: "vous n'avez pas".
Send()
etReceive()
appels bloquer le flux du programme jusqu'à ce que les données ont été envoyées, reçues ou une erreur s'est produite.Si vous voulez avoir plus de contrôle sur vos appels, il y a plusieurs mécanismes disponibles. Le plus simple est d'utiliser
Poll()
.Vous pouvez également utiliser
Select()
,BeginReceive()
ouReceiveAsync()
pour d'autres types de comportements.Je vous recommande de lire Stevens' UNIX Réseau de Programmation chapitres 6 et 16 pour de plus amples informations sur socket non bloquant l'utilisation. Même si le livre a d'UNIX en son nom, l'ensemble des sockets architecture est essentiellement la même dans les environnements UNIX et Windows (et .net)
OriginalL'auteur user1003819