2013-07-10 70 views
2

我是套接字編程的新手。我想創建一個UDP套接字,但socket()函數返回-1創建套接字函數返回-1

signed long int sockfd; 
sockfd=socket(AF_INET, SOCK_DGRAM, 0);  //socket Function returns -1 Value 

你能告訴我,當這個socket函數返回值-1?

+0

這可能是一個愚蠢的問題,但你確實調用了'WSAStartup',不是嗎? – Damon

回答

5

調用WSAGetLastError()以查找有關該錯誤的更多信息。我想你沒有調用WSAStartup()。

也就是說,存在一個SOCKET類型,您應該使用它來代替「signed long int」,並將其與INVALID_SOCKET進行比較。這些是WinSock和BSD套接字API之間的細微差別。如果有疑問,請務必查看Microsoft的文檔。

+1

'socket()'錯誤時返回'INVALID_SOCKET',而不是'SOCKET_ERROR'。 –

+0

謝謝,修復它。 –