2013-06-30 1 views
2

Je veux écrire jeu multi joueur XNA 4. Pour envoyer des données J'utilise la classe TcpClient connecté comme ceci:C# TcpClient ferme la fenêtre de jeu XNA après l'envoi de données

try{ 
    client.Connect(serverEndPoint); 
} 
catch (Exception ex){ 
    Console.WriteLine("not connected"); 
    return; 
} 

if (!client.Connected) return; 

NetworkStream stream = client.GetStream(); 

stream.BeginRead(buf, 0, 1024, new AsyncCallback(PrijmiData), null); 

quand je veux envoyer des données avec son méthodes:

private void Send(byte[] co){ 
    NetworkStream clientStream = client.GetStream(); 
    clientStream.BeginWrite(co, 0, co.Length, new AsyncCallback(Sended), null); 
} 

private void Sended(IAsyncResult res){ 
    NetworkStream clientStream = client.GetStream(); 
    clientStream.EndWrite(res); 
} 

Le serveur reçoit des données mais le jeu XNA est immédiatement terminé. Pourquoi? Merci pour le conseil.

+0

Votre question est trop vague. Vous posez des questions sur votre jeu XNA, mais vous ne fournissez aucun code, lié au jeu lui-même. Ma meilleure supposition est - il y a une exception non gérée jeter quelque part, quand vous recevez/envoyez une demande. –

+0

@Nik exception n'est pas levée, Visual Studio devrait être en mesure de le détecter, ou je me trompe? –

+0

Cela dépend de vos paramètres –

Répondre

0

Parfois, lorsque vous traitez des choses asynchrones comme celles-ci, les applications ne lancent pas d'exceptions appropriées, même si elles se produisent.

Avez-vous essayé de parcourir le code pour voir quand il se ferme réellement?

Mon pari serait dans la méthode Sended. Essayez de le changer comme ça, pour voir toutes les exceptions (il est épelé "Envoyé", btw):

private void Sended(IAsyncResult res) 
{ 
    try 
    { 
     NetworkStream clientStream = client.GetStream(); 
     clientStream.EndWrite(res); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex); 
    } 
} 
Questions connexes