当前位置:  开发笔记 > 编程语言 > 正文

如何通过UDP CFSocket发送数据包?

如何解决《如何通过UDPCFSocket发送数据包?》经验,为你挑选了1个好方法。

我是一个完整的网络新手,但我是ac/c ++程序员,我正在使用objective-c(这是针对OSX/iPhone).

我正在尝试学习如何使用cfsocket发送带有UDP套接字的魔术包.我已经看到有像AsyncUDPSocket库这样的库,但是我不想使用它们.

我试图查看苹果UDPecho文件,但作为一个初学者它确实让我困惑.我用Google搜索了ALOT,我已经把下面的代码放在一起,我有一个数据包嗅探器运行,它没有注册任何被发送的东西.我理解我的代码缺少很多错误捕获,但我只是想先了解基础知识.

这段代码对吗?(道歉,如果这种接缝含糊不清)我的意思是我错过了代码的某些阶段,例如:CFSocketSetAddress?

如果有人知道任何非常好的教程,它会有所帮助.

非常感谢任何帮助,因为我是一个完整的初学者.

谢谢

int main (int argc, const char * argv[])
{

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    CFSocketRef WOLsocket;
    WOLsocket = CFSocketCreate(kCFAllocatorDefault, PF_INET, SOCK_DGRAM, IPPROTO_UDP, 0, NULL, NULL);
    if ( socket == NULL) {
        NSLog(@"CfSocketCreate Failed");
    }else{
        if( socket ) {
            NSLog(@"Socket created :)");

                struct sockaddr_in addr;
                memset(&addr, 0, sizeof(addr));
                addr.sin_len = sizeof(addr);
                addr.sin_family = AF_INET;
                addr.sin_port = htons(9); //port
                inet_aton("255.255.255.255", &addr.sin_addr); //ip adress


                char ethadd []= "helloworld";
                CFDataRef Data = CFDataCreate(NULL, (const UInt8*)ethadd, sizeof(ethadd));
                CFSocketSendData(socket,NULL, Data, 0);}

    }

    [pool drain];
    return 0;
}

David Gelhar.. 7

您的问题非常简单:您没有告诉CFSocket您希望它发送数据的位置.

您仔细构建了一个地址addr,但之后不要使用它.您需要调用CFSocketSetAddress以在套接字上设置目标地址(如果您希望发送的所有数据包都转到同一目的地),或者将地址作为第二个参数传递给CFSocketSendData.



1> David Gelhar..:

您的问题非常简单:您没有告诉CFSocket您希望它发送数据的位置.

您仔细构建了一个地址addr,但之后不要使用它.您需要调用CFSocketSetAddress以在套接字上设置目标地址(如果您希望发送的所有数据包都转到同一目的地),或者将地址作为第二个参数传递给CFSocketSendData.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有