当我创建那个套接字时,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]
答案 0 :(得分:2)
您对clilen
的声明在哪里?
应该声明:
socklen_t clilen;
而基于编译器警告,我相信你已经使用过:
int clilen;
答案 1 :(得分:0)
memset_explicit
/ memset_s
/ memset
BSD套接字API函数结构在填入值并作为仅使用参数传递之前,或者结果可能是不确定的。perror
为用户提供更多信息。SO_REUSEADDR
之前使用setsockopt
设置bind
,或者随时崩溃。