我是新来的目标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相同的客户端部分? 我知道有很多在互联网上的教程,例如这个库 。 当我导入库项目中,我不知道如何来实例化一个新的对象。 我试过了:
[[GCDAsyncUdpSocket alloc] initWithSocketQueue:... ??? I don't know how to initialize it.
我将不胜感激,如果有人能告诉我的,我怎么能复制客户端部分成Objective C的一个简单的例子。
从下载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];
苹果提供了一个名为样本项目udpecho创建 。 虽然这是一个Mac的项目,它主要依靠从核心基础课,其也可在iOS和它包含应该同样适用于iOS的教训。
首先,有一个读这篇文章的其中列出了一些在iOS中可用的基本类型的网络通信的。
特别是,苹果使用套接字和具有网络通信的例子NSStream
类在这里 。
您可以使用正常的BSD套接字API,但它是气馁,因为他们不会与某些iOS的网络功能,如VPN的按需工作。 如果这是没有结果的,那么你可以检查此为如何在C.使用套接字的例子
从个人的经验,它并不像你在C#中已经得到了什么一样简单。
我使用管理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行代码,我可能有它的想法。