2011-01-08 77 views
2

我在win32 C++應用程序中使用winsock2。我會用MessageBox顯示我可以通過調用WSAGetLastError()檢索到的網絡錯誤。我怎樣才能做到這一點?我看到的FormatMessage,但我不知道如何使用它獲取WSA錯誤代碼的格式化消息

回答

3

下面是例如,在系統的消息表下面的搜索錯誤代碼和LPTSTR Error放置格式化的消息緩衝。

// Create a reliable, stream socket using TCP. 

if ((sockClient = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) 
{ 
DWORD err = GetLastError(); 
LPTSTR Error = 0; 

if(FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, 
     NULL, 
     err, 
     0, 
     (LPTSTR)&Error, 
     0, 
     NULL) == 0) 
    { 
    // Failed in translating the error. 
    } 
} 
+0

它的工作原理,但我有兩個問題:我爲什麼要投&錯誤到LPTSTR時,我可以簡單的寫錯誤?我應該用LocalFree(錯誤)釋放內存嗎? – Stefano 2011-01-08 11:08:13