小编Aly*_*yek的帖子

在IOS上使用CFSocket进行UDP广播

一直在做一些谷歌搜索和一些关于这个主题的阅读,但无论我花了多少时间搜索,似乎无法做到正确.

我想要做的是通过宣传我对他们提供的服务的兴趣来接收在我的网络上连接的设备的广播消息.使用wireshark,我可以看到来自我想通过网络发送的网络设备的广播/通知消息,但不能通过我的广播搜索来查看他们服务的兴趣.但是通过网络实用程序,我可以看到套接字已创建,但不知道它处于哪种状态,无论是监听还是已连接.

是的,我知道我可以使用这些库来实现这一目标,但我想从头开始构建自己的东西,并更好地了解它是如何工作的.

MySocket.h

#import <Foundation/Foundation.h>
#import <CoreFoundation/CoreFoundation.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#if TARGET_OS_IPHONE
#import <CFNetwork/CFNetwork.h>
#endif

 @interface MySocket : NSObject
 {
    NSString* _message;
    CFSocketRef cfSocket;
    CFRunLoopSourceRef cfSource;

 }

 - (void)listen;
 @end
Run Code Online (Sandbox Code Playgroud)

MySocket.m

#import "MySocket.h"

#define MAX_UDP_DATAGRAM_SIZE 65507

@implementation MySocket


static void socketCallback(CFSocketRef cfSocket, CFSocketCallBackType
                           type, CFDataRef address, const void *data, void *userInfo)
{
    NSLog(@"socketCAllBAck was called");
}    

- (void)listen
{
    //Enable broadcast to network hosts        
    int yes = 1;
    int setSockResult = 0;
    _message = [[NSMutableString alloc …
Run Code Online (Sandbox Code Playgroud)

bsd ios cfsocket

5
推荐指数
1
解决办法
6073
查看次数

标签 统计

bsd ×1

cfsocket ×1

ios ×1