0

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 を見つけるために、上記のコードを使用しています。しかし、ソケットが閉じている場合もあれば、機能しない場合もあります。閉じる理由を見つけることができません。

ありがとう

4

1 に答える 1