0

我正在尝试通过 UDP 广播。我包含了 CFNetworking 框架并将 AsyncUDPSocket 添加到我的项目中。

#import "AsyncUdpSocket.h"

然后我创建了一个套接字:

    broadcastSocket = [[AsyncUdpSocket alloc] initWithDelegate:self];

我发送数据为:

[self.broadcastSocket enableBroadcast:YES error:&error];
[self.broadcastSocket sendData:[@"hello" dataUsingEncoding:NSASCIIStringEncoding] toHost:@"255.255.255.255" port:5538 withTimeout:10 tag:1];

但是当我发送数据时,AsyncUdpSocket 崩溃并出现 EXC_BAD_ACCESS

- (CFSocketRef)socketForPacket:(AsyncSendPacket *)packet

具体在

return ([packet->address length] == sizeof(struct sockaddr_in)) ? theSocket4 : theSocket6;

或者它有时也会崩溃:

- (void)doSend:(CFSocketRef)theSocket

const void *buf  = [theCurrentSend->buffer bytes];

我制作插座的方式有问题吗?

4

2 回答 2

1

啊,我现在明白了。我更新到最新版本的 AsyncUDPSocket,它需要 ARC。有一个警告,它发出的问题没有在我的调试器中弹出,这是另一个问题。但是,当查看源代码时,它在第 11 行。Doh!

添加了 ARC 标志 (-fobjc-arc) 并且运行良好!

于 2012-09-21T01:17:48.017 回答
0

您创建了套接字,但是您创建了packet吗?

于 2012-09-20T16:53:41.223 回答