我是目标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的简单示例,我将不胜感激。
答案 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有一个使用套接字和NSStream
类here进行网络通信的示例。
你可以使用普通的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行代码,我可能会想到它。