Hallo, ik heb een probleem met het versturen van een serialized object via een TcpClient.
Het versturen gaat goed, alleen kan de ontvanger het succesvol ontvangen als de sender de verbinding direct na het versturen van het object sluit. De uitleg is een beetje krom dus ik zal een code voorbeeld geven:
Client:
Server:
Ik heb het idee dat ik voor of na het sturen van het object nog iets moet doen waardoor de ontvanger weet dat het versturen voltooid is. Ik heb alleen geen idee wat dat precies moet zijn.
Het is geen optie om de connectie te sluiten en daarna een nieuwe aan te maken, de verbinding moet bruikbaar blijven na het versturen/ontvangen van het object.
Ik hoop dat jullie mij verder kunnen helpen.
Het versturen gaat goed, alleen kan de ontvanger het succesvol ontvangen als de sender de verbinding direct na het versturen van het object sluit. De uitleg is een beetje krom dus ik zal een code voorbeeld geven:
Client:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| TcpClient client = new TcpClient(); client.Connect(IPAddress.Loopback, 1987); // Create streams. NetworkStream stream = client.GetStream(); StreamWriter writer = new StreamWriter(stream); StreamReader reader = new StreamReader(stream); writer.AutoFlush = true; // Serialize object and send it. XmlSerializer sr = new XmlSerializer(typeof(Game)); sr.Serialize(writer, _game); //Hier hangt het handeltje als ik de code zo laat, als ik echter hier 'client.Close()' neerzet dan ontvangt de server het wel goed. |
Server:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| // Listen for client. TcpListener _tcpListener = new TcpListener(IPAddress.Loopback, 1987); _tcpListener.Start(); TcpClient client = _tcpListener.AcceptTcpClient(); // Create streams. NetworkStream ns = client.GetStream(); StreamReader reader = new StreamReader(ns); StreamWriter writer = new StreamWriter(ns); XmlSerializer sr = new XmlSerializer(typeof(Game)); // Deserialize object Game newGame = (Game)sr.Deserialize(reader); // Na bovenstaande regel gaat het niet verder tenzij de sender de verbinding verbreekt. |
Ik heb het idee dat ik voor of na het sturen van het object nog iets moet doen waardoor de ontvanger weet dat het versturen voltooid is. Ik heb alleen geen idee wat dat precies moet zijn.
Het is geen optie om de connectie te sluiten en daarna een nieuwe aan te maken, de verbinding moet bruikbaar blijven na het versturen/ontvangen van het object.
Ik hoop dat jullie mij verder kunnen helpen.