Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème NetworkStream

Perte de connexion

Sujet résolu
    10 mars 2011 à 15:55:11

    Bonjour,

    Voici le contexte : En faite, j'ai un client qui envoit des messages a un serveur via un tcpClient et le serveur répond en fonction du message envoyé (logique :p)

    Voici le code avant d'expliquer le problème :

    Classe X
    {
    	private String ip;
    	private int port;
    	private TcpClient tcpClient;
    
    	protected void sendRaw(byte[] data, int length, NetworkStream stream)
    	{
    		stream.Write(data, 0, length);
    	}
    
    	protected byte[] receiveRaw(NetworkStream stream)
    	{
    		BinaryReader br = new BinaryReader(stream);
    
    		byte response = br.ReadByte();
    
    		byte[] data = new byte[1];
    
    		data[0] = responseCode;
    
    		br.close();
    
    		return data;
    	}
    }
    
    Classe Y : X
    {
    	private void aInit(String filePath, NetworkStream stream)
    	{
    		FileInfo fi = new FileInfo(filePath);
    		UInt32 filesize = (UInt32)fi.Length;
    
    		byte[] payload = BitConverter.GetBytes(filesize);
    
    		byte[] data = this.buildmessage(...);
    
    		this.sendRaw(data, data.Length, stream);
    
    		byte[] reception = this.receiveRaw(stream);
    	}
    
    	private void aStart(NetworkStream stream)
    	{
    		byte[] data = this.buildmessage(...);
    
    		this.sendRaw(data, data.Length, stream);
    
    		byte[] reception = this.receiveRaw(stream);
    	}
    
    	private void aTrans(String filePath, NetworkStream stream)
    	{
    		byte[] data = this.buildmessage(...);
    
    		this.sendRaw(data, data.Length, stream);
    
    		byte[] reception = this.receiveRaw(stream);
    	}
    
    	private void aSt(NetworkStream stream)
    	{
    		byte[] data = this.buildmessage(...);
    
    		this.sendRaw(data, data.Length, stream);
    
    		byte[] reception = this.receiveRaw(stream);
    	}
    
    	public void fonctionGeneral(String filePath)
    	{
    		this.connect(this.ip, this.port);
    
    		NetworkStream stream = this.TcpClient.GetStream();
    
    		this.aInit(filePath, stream);
    
    		this.aStart(stream);
    
    		this.aTrans(filePath, stream);
    
    		this.aSt(stream);
    	}
    }
    



    Donc pour faire cours (ou pas ^^), lorsque je lance la fonction "fonctionGeneral", il me crée ma connexion, tout comme le stream. Il exécute également la fonction
    aInit.
    Et lorsqu'il souhaite exécuter la fonction aStart, j'ai une erreur qui se déclenche dans la classe X, fonction sendRaw : stream.Write(data, 0, length).

    L'erreur est la suivante :

    ObjectDisposedException was unhandled by user code
    Cannot access a disposed object.



    Le tout est de savoir pourquoi le stream se ferme... Est-ce qu'une des méthodes que j'appelle ferme automatiquement le stream? Est-ce au niveau des BinaryReader?

    Merci d'avance

    Edit :

    Solution trouvé : lorsque je ferme un binaryReader, ça ferme aussi le stream -> d'ou l'erreur !

    Voilà
    • Partager sur Facebook
    • Partager sur Twitter

    Problème NetworkStream

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown