从iPhone通过udp发送“Hello World”消息

时间:2012-04-30 23:17:22

标签: iphone objective-c sockets udp

我是目标C的新手,我需要通过UDP发送一条简单的消息。服务器部分正在工作,因为它是用C#实现的。

C#中的服务器代码是:

 var server = new UdpClient(8585);
 var groupEP = new IPEndPoint(IPAddress.Parse("192.168.0.120"),8585);
 byte[] bytes = server.Receive(ref groupEP);

和c#中的客户端部分是:

   System.Net.Sockets.UdpClient client;     
client = new System.Net.Sockets.UdpClient("192.168.0.120",8585);    
client.Send(new byte[]{1,2,3,4},4);

如何在目标c中执行相同的客户端部分?我知道互联网上有很多教程,例如this library。当我将该库导入我的项目时,我不知道如何实例化一个新对象。我试过了:

 [[GCDAsyncUdpSocket alloc] initWithSocketQueue:... ??? I don't know how to initialize it.

如果有人可以向我展示一个如何将客户端部分复制到目标c的简单示例,我将不胜感激。

4 个答案:

答案 0 :(得分:6)

here下载GCDAsyncUdpSocket。然后你可以发送数据包:

 GCDAsyncUdpSocket *udpSocket ; // create this first part as a global variable
 udpSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];

 NSData *data = [ 
                   [NSString stringWithFormat:@"%Hello Wold" 
                    dataUsingEncoding:NSUTF8StringEncoding
                ];

[udpSocket sendData:data toHost:@"192.168.10.111" port:550 withTimeout:-1 tag:1];

答案 1 :(得分:1)

Apple提供了一个名为UDPEcho的示例项目。虽然它是一个Mac项目,但它主要依赖于Core Foundation的类,它也可以在iOS上使用,它包含的课程应该同样适用于iOS。

答案 2 :(得分:0)

首先,请阅读of this article,其中概述了iOS中可用的一些基本类型的网络通信。

特别是,Apple有一个使用套接字和NSStreamhere进行网络通信的示例。

可以使用普通的BSD套接字API,但不鼓励使用它,因为它们不能使用某些iOS网络功能,如VPN on-demand。如果这无关紧要,那么您可以查看here有关如何在C中使用套接字的示例。

从个人经验来看,它并不像你在C#中那么容易。

答案 3 :(得分:0)

我设法使用monotouch来解决问题。我这样做的方式与我在c#中的方式相同:

 System.Net.Sockets.UdpClient client;
 client = new System.Net.Sockets.UdpClient("192.168.0.120",550);
 client.Send(new byte[]{1,2,3,4},4);

我不想支付许可费用。它将花费400美元。如果我在哪里有超过3行代码,我可能会想到它。