【问题标题】:Send "Hello World" message via udp from iPhone从 iPhone 通过 udp 发送“Hello World”消息
【发布时间】:2012-04-30 23:17:21
【问题描述】:

我是目标 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 中,我将不胜感激。

【问题讨论】:

标签: iphone objective-c sockets udp


【解决方案1】:

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];

【讨论】:

【解决方案2】:

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

【讨论】:

  • 这正是我所需要的。当我运行 Mac 项目时,它运行良好。当我复制相同的库并调用相同的方法时,它在 iPhone 上不起作用。我没有收到任何错误。会不会是我做错了什么,或者它只能在 Mac 上运行?
【解决方案3】:

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

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

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

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      • 2012-04-24
      相关资源
      最近更新 更多