【问题标题】:Can' t add TCP socket to a socket set with SDL_NET无法将 TCP 套接字添加到使用 SDL_NET 的套接字集
【发布时间】:2018-10-11 22:18:23
【问题描述】:

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

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

任何帮助将不胜感激。

【问题讨论】:

标签: c windows sockets tcp sdl-net


【解决方案1】:

有几个错别字:

if (socketSet = NULL)

NULL 分配给socketSet,这会使条件为假,因此稍后您将使用它来调用带有空指针的SDLNet_TCP_AddSocket

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

缺少()

一般来说,最好启用尽可能多的警告以避免出现此类琐碎的拼写错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    • 2020-09-09
    相关资源
    最近更新 更多