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行目。

ARC フラグ (-fobjc-arc) を追加すると、問題なく動作します。

于 2012-09-21T01:17:48.017 に答える
0

ソケットを作成しましたが、作成しましたpacketか?

于 2012-09-20T16:53:41.223 に答える