无法使用/ AsyncUdp Socket 在 Iphone 上接收 UDP 数据包

Posted

技术标签:

【中文标题】无法使用/ AsyncUdp Socket 在 Iphone 上接收 UDP 数据包【英文标题】:Cannot received UDP packet on Iphone w/ AsyncUdpSocket 【发布时间】:2013-05-03 19:18:29 【问题描述】:

大家好,我正在学校做一个项目,我遇到了一个问题,我可以将 UDP 数据包发送到不同的地址,但我无法读取发送到我的 iPhone 的 UDP 数据包,在收到我想要的 UDP 数据包后数据出现在标签中,我做错了什么,但我不知道是什么.....我的代码:

- (BOOL)onUdpSocket:(AsyncUdpSocket *)sock didReceiveData:(NSData *)data withTag:(long)tag fromHost:(NSString *)host port:(UInt16)port

    NSLog(@"Incoming data");

    [sock receiveWithTimeout:1 tag:0];
    NSString *receiveddata = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
  //  NSString *receiveddata = data ;
    self.testudp.text = receiveddata;
    return YES;

【问题讨论】:

请查看本帖***.com/q/4215149/2315974 还是不行!!! :( 还有一件事,上面的方法是在主线程调用的吗? 不,它在我的视图控制器中调用我的发送数据 【参考方案1】:

这就是我所做的更改:

AsyncUdpSocket *udpsocket;
udpsocket = [[AsyncUdpSocket alloc] initWithDelegate:self];
[udpsocket enableBroadcast:YES error:nil];
[udpsocket bindToPort:1234 error:nil];
[udpsocket receiveWithTimeout:-1 tag:0];

- (BOOL)onUdpSocket:(AsyncUdpSocket *)sock didReceiveData:(NSData *)data withTag:(long)tag fromHost:(NSString *)host port:(UInt16)port
    NSLog(@"received data");
    NSString *receiveddata = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
    _testudp.text = receiveddata;

【讨论】:

_testudp 不是 UILabel 吗? 是的,它是一个标签,但现在一切正常,问题是我从不打开套接字

以上是关于无法使用/ AsyncUdp Socket 在 Iphone 上接收 UDP 数据包的主要内容,如果未能解决你的问题,请参考以下文章

java代码实现socket接口通讯(堵塞I/O)

Windows Socket I/O模型

mac上怎么连接到socket

weblogic 集群出现socket错误,导致应用服务器无法启动

基于Delphi的Socket I/O模型全接触 good

无法在 Android 客户端和 Node.js socket.io 服务器之间进行通信