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
