我正嘗試從目標c應用發送UDP數據包。從OS X 10.6開始,直到優勝美地出現爲止,它一直在正常工作。現在我收到「未知類型名稱'sockaddr_in'」錯誤。在XCode 6中找不到sockaddr_in(在OS X 10.10 Yosemite上)
我的代碼:
#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' – 2014-11-14 18:07:47
顯示所有包含文件。 – trojanfoe 2014-11-14 18:11:36
@NedDeily是的,我有CL工具安裝,我試圖運行該命令,以防萬一,沒有運氣。 – andrei 2014-11-14 19:18:43