尝试将套接字添加到套接字集时出现此错误:
PROJECTNAME.exe中的0x69702631(SDL2_net.dll)抛出异常:0xC0000005:访问冲突读取位置0x00000000。
我不确定我错过了什么。这是相关代码。
SDL_Init(SDL_INIT_EVERYTHING);
SDLNet_Init();
IPaddress serverIP;
SDLNet_SocketSet socketSet = SDLNet_AllocSocketSet(10);
if (socketSet = NULL)
{
printf("Failed to create the socket set: %s\n", SDLNet_GetError);
}
if (SDLNet_ResolveHost(&serverIP, NULL, 1234) == -1)
{
printf("SDLNet_ResolveHost: %s \n", SDLNet_GetError());
exit(1);
}
TCPsocket serverSocket;
serverSocket = SDLNet_TCP_Open(&serverIP);
if (!serverSocket)
{
printf("SDLNet_TCP_Open: %s\n", SDLNet_GetError());
}
else
{
printf("Successfully created server socket \n");
}
int numused;
numused = SDLNet_TCP_AddSocket(socketSet, serverSocket);
if (numused == -1)
{
printf("SDLNet_Addsocket: %s \n", SDLNet_GetError());
while (1)
{
printf("1");
}
}
任何帮助都将不胜感激。
答案 0 :(得分:0)
有几个拼写错误:
if (socketSet = NULL)
将NULL
分配给socketSet
,这使得条件为false,因此稍后您使用它来使用空指针调用SDLNet_TCP_AddSocket
。
printf("Failed to create the socket set: %s\n", SDLNet_GetError);
缺少()
。
一般来说,最好启用尽可能多的警告,以避免像这样的琐碎错别字。