Autor Beitrag
Kuehter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30
Erhaltene Danke: 1



BeitragVerfasst: Do 28.05.15 16:21 
Habe das Problem, dass die Kommunikation zwischen 1 Client und 1 Server klappt, nur wenn ich jetzt einen 2ten Client starte bricht er ab.
Die Fehlermeldung die ich erhalte ist:
"C# ObjectDisposedException: Verworfenes Objekt kann nicht zugegriffen werden.

Der Code wo der Fehler kommt sieht wie folgt aus:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
            try
            {
                tcpClient = tcpListener.AcceptTcpClient();
                NStream = tcpClient.GetStream();
                if (NStream.CanRead)
                {
                    BinaryWriter writer = new BinaryWriter(NStream);
                    byte[] byteStream = ImageToByteArray(StreamToImage(WebStream(CameraIP)));
                    writer.Write(byteStream);  // Fehler hier
                    NStream.Close();
                }
            }
            catch (IOException)
            {
                throw;
            }
            catch (SocketException)
            {
                throw;
            }


Dort wir der Stream einer Videokamera Übertragen, also die Verbindung geht nur vom Server rein.
Der Codeausschnitt ist nur vom Server das Empfangen vom Stream beim Client funktioniert einwandfrei
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 28.05.15 18:39 
De Codeauschnitt ist vermutlich zu klein um eine Aussage zu treffen.

Was mich wundert ist das du den Stream scheinbar von der Camera einfach weiterwirfst. Solltest du den nicht irgendwo sauber Buffern? So wie es jetzt aussieht gibst du immer einen Teil des Stream an irgendeinen Client weiter. Somit hat dann jeder Client einen Teil des Streams aber keiner den ganzen. Fühlt sich falsch an.
Kuehter Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30
Erhaltene Danke: 1



BeitragVerfasst: Fr 29.05.15 06:59 
doch gebuffert ist das in einem BufferedStream und das wird weiter geschickt. Nur der Stream wird einfach nicht gesendet wenn ich einen 2ten Client benutze und jeder Rechner bekommt den Stream habe ne alte Version. In der funktioniert das. Oder wüsstest du irgendwelche Snippets wie ich das machen kann das das er den Stream an beide schickt und nicht teile?

hier noch mal ein wenig mehr Code ist als Anhang mit dran
Einloggen, um Attachments anzusehen!
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 29.05.15 14:37 
Mir persönlich hat das jetzt noch nicht weitergeholfen da ein Problem zu sehen (bin aber immer noch der Auffassung das da jeder Client, sobald mehr als 1 Client geht, nur einen Teil des Streams bekommt)
Hast du einen Stack zu deiner ObjectDisposedException damit wir wissen welches Object gemeint sein könnte?