Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
套接字的实例化神秘地改变了C字符串的值。_C_Networking - Fatal编程技术网

套接字的实例化神秘地改变了C字符串的值。

套接字的实例化神秘地改变了C字符串的值。,c,networking,C,Networking,我有这个密码 char *ip_addr; ip_addr=(char*)malloc(10); ip_addr=getIPAddress(ip_addr); /* * Create a UDP socket to use: */ s = socket(AF_INET,SOCK_DGRAM,0); if ( s == -1 ) displayError("socket()"); memse

我有这个密码

 char *ip_addr;
             ip_addr=(char*)malloc(10);

    ip_addr=getIPAddress(ip_addr);




 /*
  * Create a UDP socket to use:
  */


 s = socket(AF_INET,SOCK_DGRAM,0);

  if ( s == -1 )
    displayError("socket()");

               memset(&adr_srvr, 0, sizeof(adr_srvr));

       adr_srvr.sin_family=AF_INET;

            adr_srvr.sin_addr.s_addr= inet_addr(ip_addr);

           adr_srvr.sin_port=htons(3000);

         len_srvr = sizeof(adr_srvr);
               bzero(&(adr_srvr.sin_zero), 8);
我通过getIPAddress函数检查ip地址是否有效,但是当代码到达adr\u srvr.sin\u addr.s\u addr=inet\u addr(ip\u addr)时,ip\u addr变为NULL

我继续调试,并在s=socket(AF_INET,SOCK_DGRAM,0)行上将错误归零。 因此,我修改了代码使其工作。我使套接字函数位于inet_addr(ip_addr)之后。现在,代码工作了。ip地址在点击inet地址行时有效

        char *ip_addr;
         ip_addr=(char*)malloc(10);

ip_addr=getIPAddress(ip_addr);




           memset(&adr_srvr, 0, sizeof(adr_srvr));

   adr_srvr.sin_family=AF_INET;

        adr_srvr.sin_addr.s_addr= inet_addr(ip_addr);

       adr_srvr.sin_port=htons(3000);

     len_srvr = sizeof(adr_srvr);
           bzero(&(adr_srvr.sin_zero), 8);




        /*
  * Create a UDP socket to use:
  */

          s = socket(AF_INET,SOCK_DGRAM,0);

  if ( s == -1 )
    displayError("socket()");

这是一件非常奇怪的事情。有人知道为什么套接字函数会影响ip_addr的值吗?

getIPAddress()的作用是什么?许多IP地址如果是ASCII表示形式(例如192.168.1.19需要13个字节),则无法放入10个字节中。getIPAddress函数以ASCII格式获取IPV4地址。@lizz好的,2个字节怎么样。我问题的一部分?包括0终止符在内的10个字符是否足以容纳您的IP地址?