2009-02-26 5 views
1

J'ai une application .net 2.0 qui utilise la méthode System.Net.Sockets Send() pour envoyer des données à intervalles réguliers, par ex. chaque minute. Essentiellement, c'est un serveur de socket. La plupart du temps, aucun client ne sera connecté pour recevoir ces données, mais occasionnellement, un utilisateur exécutera une application qui se connectera pour surveiller les données envoyées à intervalles réguliers. A chaque intervalle, le plus que j'enverrai sera d'environ 1024 octets, la plupart des messages étant beaucoup plus petits.C# Socket Server Envoyer la question

Ma question est quel impact sur les ressources du système appelle Send() chaque minute sans personne pour le recevoir? Cela finira-t-il par épuiser toute ma mémoire? J'ai lu que les sockets Windows sont basés sur Berkeley Sockets qui crée un descripteur de fichier. Y at-il une sortie standard de bas niveau (stdout) en cours et les données qui ne sont pas reçues vont simplement dans un trou noir?

Répondre

1

quel impact sur les ressources du système appelle Send() chaque minute sans personne pour le recevoir?

Devrait être aucun - il devrait jeter une erreur parce que le socket n'est pas ouvert.

Est-ce que cela finira par épuiser toute ma mémoire?

Non, il devrait simplement jeter une erreur.

Y a-t-il une sortie standard de bas niveau (stdout) en cours d'exécution et les données qui ne sont pas reçues vont simplement dans un trou noir?

Les données sont en effet jetées, et si vous faites attention, vous verrez l'erreur.

Vous devez d'abord vérifier si le socket est ouvert avant l'envoi. Si personne n'est connecté, n'envoyez pas. Une instruction if supplémentaire.

-Adam

+0

Merci, je vais ajouter le code pour voir si quelqu'un est connecté. J'ai supposé que les données étaient jetées parce que dans mes tests il enverrait juste et il n'a pas jeté une exception et mon utilisation de mémoire de processus n'a pas monté. –

+0

Aucune exception? Intéressant ... Maintenant, je vais devoir faire quelques tests. Bonne chance pour votre projet! –

+0

Si je reçois un peu de temps ce week-end, je vais mettre en place un test. Si elle se répète, je posterai le code. –