Как конвертировать из строки в sockaddr в C в Windows
Я новичок в C и пытаюсь прочитать IP-адреса с .csv
лист Excel и назначить их sockaddr
, У меня есть следующий код, но он не работает.
Изменить: Отладка показывает значение S_addr после назначения 3435973836 для IP-адреса, который "192.168.137.1"
Если это имеет значение; токен объявлен как char *token;
typedef struct node
{
int node_id;
int group_id;
struct sockaddr_in node_addr;
} node;
struct sockaddr_in ip4addr;
struct node strN_read;
while (fgets(readLine, 1024, input_file) != NULL)
{
token = strtok_s(readLine, ",", &strtk);
strN_read.node_id = atol(token);
token = strtok_s(NULL, ",", &strtk);
strN_read.group_id = atol(token);
token = strtok_s(NULL, ",", &strtk);
InetPton(AF_INET, PTSTR(token), &ip4addr.sin_addr);
strN_read.node_addr.sin_addr.S_un.S_addr = ip4addr.sin_addr.S_un.S_addr;
// ...
// ...
}
Замена
InetPton(AF_INET, PTSTR(token), &ip4addr.sin_addr);
с
WSAStringToAddress((LPWSTR)(token), AF_INET, NULL, (LPSOCKADDR)&ip4addr, &addrSize);
также дает тот же результат.