質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

4226閲覧

NWConnectionの接続先を変更するには?(Swift)

goemon12

総合スコア18

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/08/28 01:44

編集2019/08/28 13:51

SwiftのNetwork.Frameworkで質問です。
設定済みの接続先を変更するにはどうするべきですか?

connection = NWConnection(host: "127.0.0.1", port: 9600, using: .tcp) connection.stateUpdateHandler = { state in switch state { case .ready: print("接続しました") default: print("切断しました") } } let queue = DispatchQueue(label: "label") connection.start(queue: queue)

この様にIPアドレスとポートNOでconnection生成するのですけど、設定画面でIPアドレスとポート番号を設定変更する方法を探してます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t_obara

2019/08/28 04:46

NWConnectionについてドキュメントをご覧になったり、ググったりしてみては? すでにされたということであればが、その結果を踏まえて試したことや、その結果をどのようにうまくいかないのかも提示されるとよろしいかと。
guest

回答1

0

自己解決

一応下記の様な感じで動作しました。
でも、しっくりきていません。何か問題点やもっとスマートなやり方を知っていたら教えてください。

下記のコードではTextField入力チェック省略してます。IPアドレスやポート番号を空欄などを入力するとアプリが落ちます。

class ViewController: UIViewController { @IBOutlet weak var txtHost: UITextField! @IBOutlet weak var txtPort: UITextField! @IBOutlet weak var txtView: UITextView! var connection: NWConnection! override func viewDidLoad() { super.viewDidLoad() txtView.text = "" let toolbar = UIToolbar() toolbar.items = [ UIBarButtonItem(title: "閉じる", style: .done, target: self, action: #selector(ViewController.closeKey))] toolbar.sizeToFit() txtHost.inputAccessoryView = toolbar txtPort.inputAccessoryView = toolbar openTCP() } @IBAction func EditBegin(_ sender: Any) { if connection.state != .cancelled { connection.cancel() } } @objc func closeKey() { openTCP() txtHost.endEditing(true) txtPort.endEditing(true) } func openTCP() { let host: NWEndpoint.Host! = NWEndpoint.Host(txtHost.text!) let port: NWEndpoint.Port! = NWEndpoint.Port(rawValue: UInt16(txtPort.text!)!) connection = NWConnection(host: host, port: port, using: .tcp) connection.stateUpdateHandler = { state in DispatchQueue.main.async { switch state { case .setup: self.txtView.text.append(contentsOf: "Setup\n") case .preparing: self.txtView.text.append(contentsOf: "Preparing\n") case .waiting( _): self.txtView.text.append(contentsOf: "Waiting\n") case .ready: self.txtView.text.append(contentsOf: "Ready\n") case .failed( _): self.txtView.text.append(contentsOf: "Failed\n") case .cancelled: self.txtView.text.append(contentsOf: "Cancelled\n") default: break } } } let queue = DispatchQueue(label: "label") connection.start(queue: queue) } }

イメージ説明

投稿2019/08/31 03:56

編集2019/08/31 04:00
goemon12

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問