- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
背景:
我希望能够在我的 iOS 应用和服务器之间发送和接收 UDP 数据包。服务器将每条传入消息回显给客户端应用程序。 服务器已经过测试并确认可以正常工作。我有一个 StartViewController,它启动了两个实现 GCDAsyncUdpSocketDelegate 的类,一个用于发送,一个用于接收。 “发送套接字”正在工作,服务器接收消息。
问题:
应用程序永远不会在发送消息后取回传入的消息。监听套接字设置可能有问题,因为 didReceiveData 从未被调用过。
我做错了吗?
开始:
class StartViewController: UIViewController {
var inSocket : InSocket!
var outSocket : OutSocket!
override func viewDidLoad() {
super.viewDidLoad()
inSocket = InSocket()
outSocket = OutSocket()
}
@IBAction func goButton(sender: UIButton) {
outSocket.send("This is a message!")
}
}
接收:
class InSocket: NSObject, GCDAsyncUdpSocketDelegate {
let IP = "255.255.255.255"
let PORT:UInt16 = 5556
var socket:GCDAsyncUdpSocket!
override init(){
super.init()
setupConnection()
}
func setupConnection(){
var error : NSError?
socket = GCDAsyncUdpSocket(delegate: self, delegateQueue: dispatch_get_main_queue())
socket.bindToPort(PORT, error: &error)
socket.enableBroadcast(true, error: &error)
socket.joinMulticastGroup(IP, error: &error)
socket.beginReceiving(&error)
}
func udpSocket(sock: GCDAsyncUdpSocket!, didReceiveData data: NSData!, fromAddress address: NSData!, withFilterContext filterContext: AnyObject!) {
println("incoming message: \(data)");
}
}
发送:
class OutSocket: NSObject, GCDAsyncUdpSocketDelegate {
let IP = "90.112.76.180"
let PORT:UInt16 = 5556
var socket:GCDAsyncUdpSocket!
override init(){
super.init()
setupConnection()
}
func setupConnection(){
var error : NSError?
socket = GCDAsyncUdpSocket(delegate: self, delegateQueue: dispatch_get_main_queue())
socket.connectToHost(IP, onPort: PORT, error: &error)
}
func send(message:String){
let data = message.dataUsingEncoding(NSUTF8StringEncoding)
socket.sendData(data, withTimeout: 2, tag: 0)
}
func udpSocket(sock: GCDAsyncUdpSocket!, didConnectToAddress address: NSData!) {
println("didConnectToAddress");
}
func udpSocket(sock: GCDAsyncUdpSocket!, didNotConnect error: NSError!) {
println("didNotConnect \(error)")
}
func udpSocket(sock: GCDAsyncUdpSocket!, didSendDataWithTag tag: Int) {
println("didSendDataWithTag")
}
func udpSocket(sock: GCDAsyncUdpSocket!, didNotSendDataWithTag tag: Int, dueToError error: NSError!) {
println("didNotSendDataWithTag")
}
}
编辑:添加了被遗忘的代码行。
最佳答案
我终于让它与这个套接字设置一起工作:
func setupConnection(){
var error : NSError?
socket = GCDAsyncUdpSocket(delegate: self, delegateQueue: dispatch_get_main_queue())
socket.bindToPort(PORT, error: &error)
socket.connectToHost(SERVER_IP, onPort: PORT, error: &error)
socket.beginReceiving(&error)
send("ping")
}
func send(message:String){
let data = message.dataUsingEncoding(NSUTF8StringEncoding)
socket.sendData(data, withTimeout: 2, tag: 0)
}
关于ios - Swift:使用 GCDAsyncUdpSocket 接收 UDP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26790129/
我正在尝试创建一个 UDP 套接字并将数据发送到广播端口,以便我可以在同一 WiFi 网络中的其他设备上接收相同的数据。我正在计算接受的答案中给出的广播端口的 IP 地址 here . 之后我写了一些
我正在使用 GCDAsyncUdpSocket 在 iphone 和远程 udp 服务器之间获取 udp 广播。我在特定端口上向“255.255.255.255”广播地址发送一个小的“hello”。
我想通过GCDAsyncUdpSocket 发现IP 地址未知的局域网中是否有一台服务器正在监听特定端口。 .我会在局域网中广播一些消息,如果服务器存在,它会反馈一条消息,然后我就知道服务器的IP地址
我只需要通过 UDP 发送一条基本消息。我已经放弃了,我想我必须使用那里的一些库。在我研究时,有 AsyncUdpSocket 库的示例。我不知道在哪里可以下载该类(class),最后我找到了 GCD
我有一个模块,我必须通过向 255 个 IP 地址发送数据包来发现它。例如。连接的 IP:192.188.2.1 然后我必须发送一个数据包来更改最后一个值,即 var HOST = "192.188.
我正在使用 GCDAsyncUdpSocket 在我的应用程序中编写 UDP 套接字。场景是这样的:当用户点击按钮时,它会在局域网中发送一个广播包然后监听响应,局域网中有一台服务器会响应一个UDP包。
我在网络上有一个设备正在通过 UDP 多播一个非常小的文件。我正在开发的 iOS 应用程序负责读取这些数据包,我选择使用 GCDAsyncUdpSocket这样做。该文件每半秒发送一次,但是我几乎没有
didReceiveData 从未被调用 - 我编写了这个由我的主线 UIViewController 调用的 swift 类,以向接收到它的服务器发送一条消息 OK,但是当服务器发回响应,客户端从未
en0 似乎是 Apple iOS 设备的 wifi 接口(interface),但在我的代码中,小型多播客户端当我指定接口(interface) en0 时,我没有收到任何内容。有什么可能出问题的线
我很困惑。这是我的代码: public func udpSocket(sock: GCDAsyncUdpSocket!, didReceiveData data: NSData!, fromAddre
我使用这个库:https://github.com/robbiehanson/CocoaAsyncSocket iPhone 上有 TCP 的示例,但没有 UDP 的示例。我认为一切都应该是一样的。这
我目前正在使用 GCDAsyncUdpSocket 在 iOS 设备之间通过 wifi 发送多播数据报。 代码很简单.. 客户端 self.socket = [[GCDAsyncUdpSocket a
我对构建 iOS 应用还很陌生。 我正在尝试创建一个类来接收 udp 多播消息,但我根本无法让它工作...... class Discovery : GCDAsyncUdpSocketDelegate
背景: 我希望能够在我的 iOS 应用和服务器之间发送和接收 UDP 数据包。服务器将每条传入消息回显给客户端应用程序。 服务器已经过测试并确认可以正常工作。我有一个 StartViewControl
我正在构建一个 iOS 应用程序,它发送多播消息 (SSDP) 并监听来自实现该协议(protocol)的设备的响应。我正在使用 GCDAsyncUdpSocket 创建 UDP 套接字来广播 SSD
我无法在 IPv6 上运行 UDP 多播。我尝试执行此操作的平台是 iOS(使用 Swift)。我有一个 GCDAsyncUdpSocket 并像这样配置它: self.socket!.setIPv4
我正在研究通过 UDP 发送消息。但是,我一直陷入“绑定(bind)端口”的问题中。 当我第一次在 iOS 模拟器上构建项目时,没有发生任何奇怪的事情。一切都很好。 但是当我第二次构建项目时。当应用程
我正在通过 UDP 连接到 Bonjour 宣传的另一台设备上的服务器。当运行此代码的 iOS 设备和服务器都在我们的 wifi 网络上时,它工作正常,因为 bonjour 服务解析为我们的 dhcp
有时我会收到这个错误 Error Domain=NSPOSIXErrorDomain Code=65 "No route to host" UserInfo={NSLocalizedDescripti
它适用于任何已知的 IP,如下所示: [udpSocket sendData:datatosend toHost:@"192.168.1.113" port:port withTimeout:-1 t
我是一名优秀的程序员,十分优秀!