Tag: udp

接收udp广播数据包ios

我几乎完成了与iOS客户端为我的REST服务。 我唯一缺less的是客户端在networking上侦听接收主机显示名称和基本URL上传的UDP广播的能力。 networking上可能有多个服务器正在广播并等待上传。 asynchronous是首选。 服务器将在设备发现它们时显示给用户,并且我希望用户能够在任何时间点select服务器。 广播公司正在发送到255.255.255.255,并没有期望任何数据回来。 我是客观的初学者,所以简单易用是最好的。

如何使用GCDAsyncUdpSocket通过wifi和蓝牙进行组播

我目前使用GCDAsyncUdpSocket在iOS设备之间通过wifi发送多播数据报。 守则很简单.. 客户 self.socket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()]; //omitted error checking [self.socket bindToPort:12345 error:&err]; [self.socket joinMulticastGroup:@"224.0.1.1" error:&err]; [self.socket beginReceiving:&err]; 服务器 self.multicastSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()]; NSData *d = [@"hello" dataUsingEncoding:NSUTF8StringEncoding]; [self.multicastSocket sendData:d toHost:@"224.0.1.1" port:12345 withTimeout:-1 tag:11]; 这工作得很好,无线networking。 我如何使它通过蓝牙工作呢? 我GOOGLE了一堆,找不到任何东西…我需要创build两个单独的套接字? 一个绑定到wifi接口,另一个绑定到蓝牙接口? 编辑:还是我困惑的东西根本? 这一定是可能的。 GameKit的GKSession完全是这样的,对吧?

GCDAsyncUdpSocket和多播发送和接收

在第一种方法中,我创build了基于sampleProject的客户端 – 服务器应用程序,它将一些数据发送到服务器。 Legend: sender address = reciver ip port = reciver port reciver address = null since he is listening port = in my case 55555 工作代码 跳过错误检查只是为了公共的原因 寄件人 -(id*)initForSender:(NSString*)address port:(int)port { self = [super init]; if (self) { _port = port; _address = address; tag = 0; _udpSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()]; […]

Swift:用GCDAsyncUdpSocket接收UDP

背景: 我想能够发送和接收我的iOS应用程序和服务器之间的UDP数据包。 服务器将每个传入的消息回显给客户端应用程序。 服务器经过testing并确认工作 。 我有一个StartViewController,它启动两个实现GCDAsyncUdpSocketDelegate的类,一个用于发送,另一个用于接收。 “发送套接字”正在工作,服务器收到消息。 问题: 该应用程序发送后永远不会收到传入的消息。 与侦听套接字设置的东西可能是错误的,因为didReceiveData永远不会被调用。 我完全做错了吗? 开始: class StartViewController: UIViewController { var inSocket : InSocket! var outSocket : OutSocket! override func viewDidLoad() { super.viewDidLoad() inSocket = InSocket() outSocket = OutSocket() } @IBAction func goButton(sender: UIButton) { outSocket.send("This is a message!") } } 接收: class InSocket: NSObject, GCDAsyncUdpSocketDelegate { let IP […]

iOS上的GCDAsyncUdpSocket丢失了多播数据报

我有一个networking上的设备,通过UDP组播一个非常小的文件。 我正在开发的iOS应用程序负责读取这些数据包,我select使用GCDAsyncUdpSocket来做到这一点。 该文件每半秒发送一次,但我几乎没有收到它(往往每3-10秒接收一次)。 考虑到这可能是设备的问题,我开始使用Wireshark监控stream量。 这似乎反映了我在应用程序中看到的内容,直到我在Wireshark中启用“Monitor Mode”为止,此时每个UDP数据包都被捕获。 此外,iOS模拟器开始接收所有丢失的数据包,因为它与我正在开发的Mac共享网卡。 有没有办法在iOS设备上启用“监视器模式”,或者我缺less一些可以丢失数据包的东西? 我也看到在GCDAsyncUdpSocket中有一个readStream方法。 也许我需要使用这个而不是beginReceiving? 尽pipe如此,我不知道如何在Objective-C中设置stream。 这是我现在的testing代码: – (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSLog(@"View Loaded"); [self setupSocket]; } – (void)setupSocket { udpSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()]; NSError *error = nil; if (![udpSocket bindToPort:5555 error:&error]) { NSLog(@"Error binding […]