我試圖設置與客戶端在同一臺計算機上運行的服務器應用程序的簡單連接。winsock連接方法錯誤10038
我的代碼如下所示:
void Base::Connect(string ip, string port)
{
int status;
SOCKET ConnectSocket = INVALID_SOCKET;
struct addrinfo hints;
struct addrinfo *servinfo; // will point to the results
memset(&hints, 0, sizeof hints); // make sure the struct is empty
hints.ai_family = AF_UNSPEC; // don't care IPv4 or IPv6
hints.ai_socktype = SOCK_STREAM; // TCP stream sockets
// get ready to connect
status = getaddrinfo(ip.c_str(), port.c_str(), &hints, &servinfo);
// Socket Setup
if (ConnectSocket = socket(servinfo->ai_family, servinfo->ai_socktype, servinfo->ai_protocol) == INVALID_SOCKET)
{
printf("[NETWORKING] An error occured when setting up socket\n");
}
// Connect
if (connect(ConnectSocket, servinfo->ai_addr, (int)servinfo->ai_addrlen) == SOCKET_ERROR)
{
int error = WSAGetLastError();
printf("Connect error: ", error);
}
}
在此之前,我稱之爲WSAStartup()
,它不會引發任何錯誤。如果服務器處於打開或關閉狀態,則錯誤不會更改。
我使用的IP是127.0.0.1,我通過端口80連接。我嘗試了一些其他的(1337),這給了我同樣的錯誤。
有什麼明顯的錯誤嗎?任何想法可能會出錯?
WSAENOTSOCK名單。你的套接字創建有一個括號錯誤 – deviantfan
你在哪裏看到括號錯誤?實際socket()方法我找不到任何錯誤 – Dries
下面寫的答案 – deviantfan