C#TcpClient在发送数据后关闭XNA游戏窗口

时间:2013-06-30 20:59:25

标签: c# tcp xna tcpclient networkstream

我想在XNA 4中编写多人游戏。对于发送数据,我使用的是连接的TcpClient类:

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);

当我想用他的方法发送数据时:

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);
}

服务器接收数据但XNA游戏立即结束。为什么?谢谢你的建议。

1 个答案:

答案 0 :(得分:0)

有时,当你处理这样的异步事件时,应用程序即使发生了异常也不会抛出异常。

您是否尝试单步执行代码以查看它何时实际关闭?

我的赌注是Sended方法。尝试像这样更改它,看看有没有例外(它拼写为“已发送”,顺便说一句):

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