255 の IP アドレスにパケットを送信して検出する必要があるモジュールがあります。例えば。接続された IP : 192.188.2.1 次に、最後の値を変更するパケットを送信する必要があります。
var HOST = "192.188.2.1"
var arr = HOST.components(separatedBy: ".")
for i in 1 ..< 254
{
dispatchGroup.enter()
time += 0.005
DispatchQueue.main.asyncAfter(deadline: .now() + time) {
let obj = LPScanPacket()
arr[3] = "\(i)"
let str = arr.joined(separator: ".")
SenderWrapper.sendLPPacket(lpPacket: obj, HOST: str)
dispatchGroup.leave()
}
}
dispatchGroup.notify(queue: .main) {
print("Completed sending ")
}
しかし、この多くのパケットを送信すると、udpSocketDidClose デリゲート メソッド内でエラーが表示されます
エラー Domain=NSPOSIXErrorDomain Code=65 "No route to host" UserInfo={NSLocalizedDescription=ホストへのルートがありません。NSLocalizedFailureReason=send() 関数でエラーが発生しました。}
まず、なぜこのエラーが発生するのですか?この結果を達成できる別の方法はありますか?
編集 :
このコードを実行してみてください。同じルーターに接続されたデバイスから応答を得ようとしています。デバイス IP を見つけるために、上記のコードを使用しています。しかし、ソケットが閉じている場合もあれば、機能しない場合もあります。閉じる理由を見つけることができません。
ありがとう