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



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

serv_sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
checkError( (serv_sock < 0), "cliente: no puedo abrir un socket TCPn");
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);

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

你的clilen声明在哪里?

应该声明:

socklen_t clilen;

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

int clilen;

同样重要的是:

  1. memset_explicit/memset_s/memsetBSD 套接字 API 函数结构,然后再用值填充它们并作为仅 in
  2. -
  3. 始终检查系统调用的返回值,并使用perror为用户提供更多信息。
  4. 在调用bind之前使用setsockopt设置SO_REUSEADDR,否则随时崩溃。

资源

  • 这是一个非常好的便携式C示例(pdf(
  • Beej的插座指南
  • 伯克利网络课程幻灯片与图表(pptx(

相关内容

  • 没有找到相关文章