在iOS中调用recvfrom没有匹配功能

时间:2013-09-23 18:28:17

标签: xcode sockets

我有

  #include <sys/socket.h>
   recvfrom(s, dgram, sizeof(dgram), size, (struct sockaddr*)&adr, &x);

我在iOS中没有收到调用recvfrom的匹配函数。 但是Xocde确实展示了原型

 recvfrom(int, void*, size_t, int, struct sockaddr *, socklen_t*)

那么,为什么Xcode在recvfrom上没有给出匹配的函数错误?

3 个答案:

答案 0 :(得分:4)

其中一个参数的类型可能不正确。尝试通过终端使用gcc编译代码以获得更好的错误消息。出于某种原因,Xcode对此非常模糊。

确保第6个参数&x中的x是'socklen_t *'(又名'unsigned int *'),而不是int。这就是导致我犯这个错误的原因。

答案 1 :(得分:0)

您需要在目标的libc.dylib构建阶段中链接Link Binary With Libraries库。

答案 2 :(得分:0)

将socklen_t用于x

socklen_t x = sizeof(servaddr);
uint8_t buffer[1024];

long nBytes = 
     recvfrom(socket, buffer, 1024, 0, (struct sockaddr *) &servaddr, &x)