C中套接字的问题(函数接受)

时间:2018-06-15 21:38:23

标签: c sockets

当我创建那个套接字时,exec函数接受但是这个函数会引起警告,我不知道为什么,任何人都可以帮助我?,我的代码片段是

serv_sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
checkError( (serv_sock < 0), "cliente: no puedo abrir un socket TCP\n");
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(atoi(argv[1]));
serv_addr.sin_addr.s_addr=0;
bind(serv_sock, (struct sockaddr *) &serv_addr, sizeof(serv_addr));
listen(serv_sock,5);
clilen = sizeof(cli_addr);
while(clilen > 0){
     sockfd = accept(serv_sock, (struct sockaddr *) &cli_addr, &clilen);

Ant警告是:passing 'int *' to parameter of type 'socklen_t *' (aka 'unsigned int *') converts between pointers to integer types with different sign [-Wpointer-sign]

2 个答案:

答案 0 :(得分:2)

您对clilen的声明在哪里?

应该声明:

socklen_t clilen;

而基于编译器警告,我相信你已经使用过:

int clilen;

答案 1 :(得分:0)

同样重要的是:

  1. memset_explicit / memset_s / memset BSD套接字API函数结构在填入值并作为仅使用参数传递之前,或者结果可能是不确定的。
  2. 始终检查系统调用的返回值,并使用perror为用户提供更多信息。
  3. 在致电SO_REUSEADDR之前使用setsockopt设置bind,或者随时崩溃。
  4. 资源