无法将TCP套接字添加到使用SDL_NET的套接字集

时间:2018-05-01 21:13:19

标签: c windows sockets tcp sdl-net

尝试将套接字添加到套接字集时出现此错误:

  

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");
    }
}

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

有几个拼写错误:

if (socketSet = NULL)

NULL分配给socketSet,这使得条件为false,因此稍后您使用它来使用空指针调用SDLNet_TCP_AddSocket

printf("Failed to create the socket set: %s\n", SDLNet_GetError);

缺少()

一般来说,最好启用尽可能多的警告,以避免像这样的琐碎错别字。