gpt4 book ai didi

objective-c - 在 XCode 6 中找不到 sockaddr_in(在 OS X 10.10 Yosemite 上)

转载 作者:行者123 更新时间:2023-12-03 11:56:54 25 4
gpt4 key购买 nike

我正在尝试从 objective-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
有没有人遇到过这个问题?

编辑:没有意识到 <> 括号中的东西没有显示

最佳答案

inet(4) man page .你必须:

#include <sys/types.h>
#include <netinet/in.h>

一般来说,socket接口(interface)是通用的。它可以与不同的地址族一起使用。 struct sockaddr是一般形式,而 sockaddr_in特定于 IPv4。您将使用 sockaddr_in6对于 IPv6 地址。对于 Unix 域套接字,您将使用 sockaddr_un .等等。您需要查阅手册页以了解要使用的套接字类型(例如 inet6(4)unix(4) 等)。

关于objective-c - 在 XCode 6 中找不到 sockaddr_in(在 OS X 10.10 Yosemite 上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26936058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com