Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.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
警告:正在传递‘的参数2;getsockname’;来自不兼容的指针类型_C_Tcp - Fatal编程技术网

警告:正在传递‘的参数2;getsockname’;来自不兼容的指针类型

警告:正在传递‘的参数2;getsockname’;来自不兼容的指针类型,c,tcp,C,Tcp,我想不出来。有谁能告诉我为什么会出现这个错误: 警告:从不兼容的指针类型传递'getsockname'的参数2 在以下代码中: #include <arpa/inet.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <strings.h> #include <sys/socket.h> int main() { int

我想不出来。有谁能告诉我为什么会出现这个错误:

警告:从不兼容的指针类型传递'getsockname'的参数2

在以下代码中:

#include <arpa/inet.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <sys/socket.h>

int main() {
  int sd;
  struct sockaddr_in my_addr;

  bzero(&my_addr,sizeof(my_addr));
  my_addr.sin_family = AF_INET;
  my_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
  my_addr.sin_port = htons(0);
  my_addr.sin_addr.s_addr = INADDR_ANY;
  socklen_t my_addr_size = sizeof my_addr;

  if((sd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
        fprintf(stdout, "Cannot create socket for master socket.\n");
            fprintf(stdout, "Terminating program\n\n");
                exit(1);
  }

  if (bind(sd, (struct sockaddr *)&my_addr, sizeof(my_addr)) < 0) {
        fprintf (stdout, "Binding failed for master socket\n\n");
            perror("bind failed");
                exit (1);
  }

  if (getsockname(sd, &my_addr, &my_addr_size) == -1) {
        perror("getsockname() failed");
            return -1;
  }
}
#包括
#包括
#包括
#包括
#包括
#包括
int main(){
国际标准差;
我的地址中的结构sockaddr\u;
bzero(&my_addr,sizeof(my_addr));
我的地址sin家庭=AFINET;
my_addr.sin_addr.s_addr=inet_addr(“127.0.0.1”);
my_addr.sin_port=htons(0);
my_addr.sin_addr.s_addr=INADDR\u ANY;
socklen_t my_addr_size=my_addr的大小;
if((sd=socket(AF\u INET,SOCK\u STREAM,0))<0){
fprintf(stdout,“无法为主套接字创建套接字。\n”);
fprintf(stdout,“终止程序”\n\n);
出口(1);
}
if(bind(sd,(struct sockaddr*)和my_addr,sizeof(my_addr))<0){
fprintf(stdout,“主套接字绑定失败\n\n”);
perror(“绑定失败”);
出口(1);
}
如果(getsockname(sd、我的地址和我的地址大小)=-1){
perror(“getsockname()失败”);
返回-1;
}
}

getsockname的第二个参数应该是
struct sockaddr*
。您正在

中传递一个
struct sockaddr\u的地址,
getsockname
的第二个参数应该是
struct sockaddr*
。您正在
中传递结构sockaddr\u的地址

谢谢!该参数只需要转换为
struct sockaddr*
。谢谢!该参数只需要转换为
struct sockaddr*