这是设置。我正在尝试将信息从PC发送到移动设备。目前,该设置正在Mac和iPhone之间执行。
我正在使用Python发送UDP广播,以便移动设备可以检测到PC连接到同一网络并可用于发送数据。
这是PC上使用的Python代码:
import socket
import os
from time import sleep
IP = os.popen('ifconfig en0 | grep "inet\ addr" | cut -d: -f2 | cut -d" " -f1').read()
PORT = 4801
KEY = "IDKEY"
# Create socket.
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# Bind socket.
sock.bind(('', 0))
# Configure socket.
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
# Server Loop.
while True:
data = KEY+IP
sock.sendto(data.encode(), ('<broadcast>', PORT))
print("Sent broadcast")
sleep(5)
以下是移动设备上使用的Swift代码(我正在使用SwiftSocket library):
let server = UDPServer(address: "", port: 4801)
var connected = false
repeat {
let data = self.server.recv(1024)
if let key = String(data: Data(bytes: data.0!), encoding: .utf8) {
if (key == self.keyTextField.text) {
print("Auth complete")
connected = true
} else {
print("Wrong key")
}
}
print(data)
} while connected == false
在模拟器上,这工作得很好。但是,独立的,当它们都连接到同一个WiFi站时,这根本不起作用。移动设备卡在无限循环中,因为它从不接收任何数据。
我不得不承认,我对这种网络很陌生,所以我的方法很有可能从根本上不正确。我想知道这里有什么问题,也许,实现这一目标的更好方法是。
理想情况下,执行链如下: