Avatar billede runeborgbjerg Nybegynder
12. februar 2004 - 10:48

XmlTextReader med en NetworkStream fra TcpClient.GetStream() fejl

Vi arbejder med en flertrådet chat-server i C# (Vi er meget tidligt i projektforløbet), og vi vil gerne sende nogle data vha XML.

Klassen ServerAdapter skal connecte sig til serveren (dette fungerer ganske udemærket), for at sende data, men på samme stream kunne læse data (hvilket fejler)

I funktionen 'bool Connect()' vil vi instantiere en XmlTextReader med en stream vi har fra en TcpClient, og det er så dér det går galt.
Der bliver ikke kastet nogen exceptions, applikationen terminerer ikke (ikke engang tråden). Den fryser bare ved kaldet af XmlTextReaders's konstruktor, når vi altså sender den stream vi har fra '(TcpClient)client.GetStream()' kaldet.

Hvis vi prøver præcist det samme med en lignende stream, som vi har fra et andet "sted" end 'client.GetStream()', virker det efter hensigten. På serversiden, hvor vi tager imod forbindelsen, har vi prøvet at ændre en acces-property på forbindelsen (en socket), men det ændrer intet.
Vi er ved at løbe tør for idéer, og det er lidt for basalt til at man bare lige kan ændre sin arkitektur, for at komme rundt om problemet :)

Vi har testet hvor langt applikationen kommer, ved hjælp at test-udskrifter, så vi VED at det er i det kald den fejler.

Her er den del af koden som fejler.

public class ServerAdapter : IServerAdapter
{
private IServerEventHandler serverEventHandler;

private TcpClient client;
private NetworkStream stream;

private Thread readThread;

private XmlTextReader streamReader;
private XmlTextWriter streamWriter;
private BinaryReader reader;

private XmlValidatingReader validatingReader;
private XmlSchemaCollection schemaCollection;

public ServerAdapter()
{

}

public ServerAdapter( IServerEventHandler serverEventHandler ):base()
{
this.serverEventHandler = serverEventHandler;

}

public bool Connect()
{
bool connected = false;

try
{
client = new TcpClient();
client.Connect( "10.0.55.12", 4312 );

stream = client.GetStream();

streamReader = new XmlTextReader( stream );

streamWriter = new XmlTextWriter( stream, new System.Text.UTF8Encoding() );

blablabla....

på forhånd tak!

...Borgbjerg
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester