2009-08-11 12 views
2

Bonjour,Rouvrir un NetworkStream fermé?

Je suis dans le besoin de quelques conseils, je me sers d'un NetworkStream, qui est en streaming à partir d'un TcpClient, tout fonctionnait très bien, mais je nécessaire la certaines fonctionnalités ailleurs, ce qui nécessite le flux à fermé. Je n'arrive pas à trouver un moyen de réouvrir la connexion une fois qu'elle a été fermée. Quelqu'un pourrait-il me pointer dans la bonne direction ici?

Voici un exemple du code Je suis basé sur: (Il est évident que ce n'est pas exactement comment cela fonctionne, mais je l'ai simplifié autant que possible :-))

private void MyMainFunction() 
    { 
    ConnectToTcp(); 

    if(CheckConnection == true) 
    { 
    DoWorkWithTcp(); 
    } 

    DisconnectFromTcp(); 

    ConnectViaOtherSource(); 
    DoOtherSourceWork(); 
    DisconnectOtherSource(); 

    ConnectToTcp(); //Excecption thrown, epic fail! 
    } 

private void ConnectToTcp() 
    { 
    myClient = new TcpClient(ip, port); 
    myNetStream = myClient.GetStream(); 
    } 

private void DisconnectFromTcp() 
    { 
    myNetStream.Close(); 
    myClient.Close(); 
    } 

Merci à l'avance , apprécié.

Édition - Nom d'orthographe variable modifié! Oups!

Modifier - Désolé, vient de réaliser le problème venait d'ailleurs, grâce à la confirmation que ce code est correct :-) M'a aidé à repérer le problème d'une autre source

+1

Quelle exception est levée lorsque vous tentez de vous reconnecter? – Marcom

+0

ObjectDisposedException, mais je les recrée? – ThePower

+0

Pouvez-vous créer un programme court mais complet qui illustre le problème? C'est à dire. quelque chose que nous pouvons coller dans son intégralité dans un fichier console Program.cs, compiler et exécuter? –

Répondre

1

La question se pose de savoir pourquoi vous devez fermer la connexion, ne pouvez-vous pas le garder ouvert (dormant) pendant DoOtherSourceWork()? En dehors de cela, le code semble OK, créant un nouveau TcpClient etc, donc je pense que cela dépend de l'autre côté - que fait le logiciel homologue lorsque vous fermez la connexion?

1

Je ne sais pas puisque vous na pas coller l'ensemble chose mais

myClient = nouveau TcpClient (ip, port); myNetStream = sockClient.GetStream();

sockClient n'est pas myClient est-ce une faute de frappe ou son réellement dans le code? Si c'est le cas, vous devez recréer sockClient aswell

+0

Désolé, c'était mon erreur! bon endroit! – ThePower