【发布时间】:2016-01-24 20:56:37
【问题描述】:
我正在尝试从目标 c 应用程序发送 UDP 数据包。从 OS X 10.6 到 Yosemite 出现之前,它一直运行良好。现在我收到“未知类型名称'sockaddr_in'”错误。
我的代码:
#import <sys/socket.h>
-(void)sendUdpPacket:(unsigned int) udp_address port:(unsigned short)port data:(const char*)data dataSize:(long)dataSize
{
int handle = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP );
if ( handle <= -1 )
{
return;
}
sockaddr_in address;
address.sin_family = AF_INET;
address.sin_addr.s_addr = htonl( udp_address );
address.sin_port = htons( port );
if ( bind( handle, (const sockaddr*) &address, sizeof(sockaddr_in) ) < -1 )
{
printf( "-----------------------failed to bind socket\n " );
return;
}
int nonBlocking = 1;
if ( fcntl( handle, F_SETFL, O_NONBLOCK, nonBlocking ) == -1 )
{
printf( "----------------------failed to set non-blocking socket for %d\n", port );
return;
}
int sent_bytes = sendto( handle, data, dataSize, 0, (sockaddr*)&address, sizeof(sockaddr_in) );
close(handle);
}
现在我遇到了无法找到IPROTO_UDP or sockaddr_in的错误
有人遇到过这个问题吗?
编辑:没有意识到 括号中的内容没有显示
【问题讨论】:
-
您是否还安装了 Xcode 命令行工具?如果没有,
/usr/include等中可能没有头文件。尝试运行xcode-select --install -
显示所有包含文件。
-
@NedDeily 是的,我安装了 CL 工具,我尝试运行该命令以防万一,但运气不好。
标签: objective-c macos sockets xcode6 osx-yosemite