2013-08-31 5 views
1

J'utilise Sockets en C#.Utilisation efficace des sockets en C#

J'utilise ceci pour se connecter:

client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
client.Connect(remoteEP); 

J'envoyer un message en utilisant client.send ...

Je reçois un message en utilisant client.receive ...

J'ai lu pour maximiser la la performance de l'utilisation de sockets, je devrais utiliser Ayscn Sockets.

Est-ce vrai et existe-t-il un numéro de tampon optimisé à utiliser? par exemple le tampon [256] (etc.).

De même, côté serveur, j'assigne un thread à une requête client entrante. Une fois le travail terminé, je ferme la prise. J'ai trouvé cela un bon moyen de gérer les clients, mais j'ai également trouvé des suggestions que ce n'est pas la meilleure voie à suivre. Vraiment juste besoin de conseils sur la meilleure façon d'aller et pourquoi.

merci ..

+0

"Connecteurs Ayscn"? Vous avez probablement voulu dire async? –

+0

je vous remercie pour la correction orthographique .. –

+0

Je sais que cette question a été posée plusieurs fois mais je reçois des conseils contradictoires donc ce serait bien de voir s'il y a une réponse définitive .. –

Répondre

0

Async IO est quand vous avez beaucoup de prises (beaucoup plus que le nombre de processeurs). Dans d'autres cas, il ne modifie pas le profil de performance (sauf qu'il est un peu plus lent car il a plus de frais généraux).

Async consiste à initier et compléter une E/S. Le travail réel que l'IO doit effectuer ne change pas. Utiliser async ne peut pas rendre le réseau plus rapide.

+0

Salut, merci pour cela. C'était la clarté que j'avais après. Serait-il juste de supposer si je place un tampon d'octets à dire 256 bits et que le paquet total est grand (disons une image ou une vidéo) alors le processus serait lent que si j'avais réglé le tampon à 1024 bits ? En outre, vice-versa si le tampon était grand mais le paquet était connu pour plus petit? (J'espère avoir expliqué ce droit) –

+0

Idéalement, le tampon est au moins la taille des données disponibles. Je vous recommande d'allouer un tampon d'une certaine taille et de le réutiliser. Selon la rapidité de la connexion, vous pouvez essayer des tailles de 8 Ko ou 64 Ko. Ne pas aller beaucoup plus bas sur les connexions rapides car cela entraînera beaucoup d'appels en lecture (qui sont des transitions en mode noyau). – usr