0

我是 C 新手,正在尝试从.csvexcel 表中读取 IP 地址并将它们分配给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);

也给出了相同的结果。

4

0 回答 0