4

我是目标 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.

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

4

4 回答 4

6

从这里下载 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];
于 2012-05-01T16:56:00.050 回答
1

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

于 2012-04-30T23:48:12.437 回答
0

首先,阅读这篇文章,它概述了 iOS 中可用的一些基本网络通信类型。

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

可以使用普通的 BSD 套接字 API,但不鼓励这样做,因为它们不能与某些 iOS 网络功能(如按需 VPN)一起使用。如果这无关紧要,那么您可以在此处查看如何在 C 中使用套接字的示例。

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

于 2012-04-30T23:42:02.717 回答
0

我设法使用单点触控解决了这个问题。我只是按照我在 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 行代码,我可能会想到它。

于 2012-05-01T03:54:25.040 回答