2013-06-30 52 views
2

我想寫多玩家遊戲的XNA 4.發送數據我使用的連接這樣的TcpClient類後關閉XNA遊戲窗口:C#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遊戲立即結束。爲什麼?謝謝你的建議。

+0

您的問題太含糊。你問你的XNA遊戲,但你沒有提供與遊戲本身相關的代碼。我最好的猜測是 - 當你收到/發送一個請求時,有一個未處理的異常拋出。 –

+0

@Nik異常不會拋出,Visual Studio應該能夠檢測到它,或者我錯了? –

+0

這取決於你的設置 –

回答

0

有時候,當你正在處理這樣的事情異步,應用程序不亂扔,即使它們發生適當的例外。

您是否試過單步執行代碼以查看它何時實際關閉?

我的賭注是在Sended-method。嘗試改變它像這樣,看到任何例外(它拼寫爲「發送」,順便說一句):

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