J'ai un objet TcpClient qui envoie des données au serveur, en utilisant son NetworkStream.Write() sous-jacent. cet effet, j'ai:Quelle est la manière correcte de fermer une connexion TCP?
TcpClient server = new TcpClient(serverName, 50001);
/* ... */
NetworkStream stream = server.GetStream();
Maintenant, quand un bouton est pressé, la connexion doit fermer. Quelle est la bonne façon de fermer la connexion? Les documents MSDN indiquent que la fermeture du TcpClient (avec .Close()) ne ferme en fait pas le socket, seulement les ressources TcpClient (c'est du moins la façon dont j'ai compris les docs). Donc, le code suivant fermerait-il correctement la connexion?
stream.Close();
server.Close();
Est-ce suffisant, ou devrais-je vérifier d'abord (en quelque sorte) si le flux (ou serveur) peuvent être fermés (si la connexion est à moitié ouverte ou quelque chose) ...
Encore plus , NetworkStream.Close()
MSDN documents indique qu'il libère des ressources (même sockets), donc peut-être la fermeture du flux suffirait, que j'empêche d'utiliser le TcpClient après ce point.
Quelle est la bonne approche?
Je suppose que je faisais confiance IntelliSense trop. Le popup pour le TcpClient.Close() indique ceci: "Dispose cette instance de System.Net.Sockets.TcpClient sans fermer la connexion sous-jacente." Chose étrange. Merci pour la réponse si. –
En effet, c'est ce que les docs 3.0 (http://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient.close(VS.85).aspx) disent dans la première phrase ... mais alors la troisième phrase dit qu'elle * ferme * Socket et NetworkStream. Les docs 3.5 (que j'ai liés plus tôt) sont cohérents. Je soupçonne que la ligne dans les docs 3.0 était une erreur. – Joren