簡體   English   中英

為什么inet_ntoa在此代碼中返回0.0.0.0?

[英]Why inet_ntoa returns 0.0.0.0 in this code?

這是我正在嘗試的代碼:

#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdint.h>
#include <string.h>

int main(){
    uint8_t dip[4]={127,0,0,1};
    struct sockaddr_in serv_addr;
    memset(&serv_addr, 0, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = 5000;
    memcpy(&serv_addr, dip, 4);
    printf("IP: %s\n", inet_ntoa(serv_addr.sin_addr));

    return 0;
}

這是我終端上的最終結果

IP: 0.0.0.0

我不明白為什么我得到了那個結果。 有人知道發生了什么嗎?

問題出在

  memcpy(&serv_addr, dip, 4);

在這里您忘記提及目標成員(作為嵌套struct in_addr ),而是使用結構變量地址。 做喜歡

 memcpy(&(serv_addr.sin_addr), dip, 4);

它應該工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM