私は最近Swift 3を学び始めました。私は何とかそれをRaspberry Piで動作するPythonプログラムと話す必要があります。私はこれを達成できるSocket.IOのようなライブラリをいくつか見てきましたが、どこから始めるべきかわかりません。 Swift 3でソケットを作成するにはどうしたらいいですか?2ウェイ通信が必要なので、ソケットが正しい方法であると言っても間違いありませんか?Swift 3 iPhoneアプリケーションでソケットを使用
2
A
答えて
2
使用しているプラットフォームによって異なります。あなたはiOS上にいるので、InputStream/OutputStreamを利用することをお勧めします。親ストリームプロトコルは、ソケット上の入力/出力ストリームを作成するためのインタフェースを提供し、あなたがしている場合、それは、下CFSocketsを活用し、ソケットに疑問を抱いにおけるケースの他の誰つまずくで素敵スウィフト3インターフェイス
var inputStream: InputStream?
var outputStream: OutputStream?
Stream.getStreamsToHost(withName: "thing.local", port: 9090, inputStream: &inputStream, outputStream: &outputStream)
を持っています/ iOS、macOSなどではなく、Swift CoreFoundationはまだ不完全で、Stream.getStreamsToHostが正しく実装されていません(残念なことに:/)SwiftはCを使用できるので、posixソケットを作成することができます
#if os(OSX) || os(iOS) || os(watchOS) || os(tvOS)
import Darwin
#elseif os(Linux) || os(FreeBSD) || os(PS4) || os(Android)
import Glibc
#endif
let sock = socket(AF_INET, Int32(SOCK_STREAM.rawValue), 0)
var addr = sockaddr_in(sin_family: sa_family_t(AF_INET),
sin_port: in_port_t(htons(UInt16(port))),
sin_addr: hostAddr,
sin_zero: (0, 0, 0, 0, 0, 0, 0, 0))
let addrPtr = withUnsafePointer(to: &addr){ UnsafePointer<sockaddr>(OpaquePointer($0)) }
let connected = connect(sock, addrPtr, UInt32(MemoryLayout<sockaddr_in>.size))
もちろん、読むのはとても不愉快で、あまり甘いものではありませんが、ギターとアールソケット実装の過多でound。すべての主要なサーバーサイドスウィフトプロジェクト(Perfect、IBM Kitura、Vapor、Zewo、Nozeなど)には、使用できるシンプルなソケットおよび/またはSSLソケットの実装がいくつかあります。とにかく彼らのようなCソケット。
iOSでさえ楽しい演習では、GCDの知識を広げ、DispatchSourceまたはDispatchIOを使ってGCDベースのソケットを作成することになります(DispatchSourceはサーバーのリスニングに役立ちます.IOはファイルへの一般的な非同期インオーダーIOディスクリプタなどであり、ソケットはファイル記述子なので...)
関連する問題
- 1. Swift 3ソケットの問題
- 2. iPhoneアプリケーションでSwiftyDropboxを使用する
- 3. PageMenuをストーリーボードで使用するSwift 3
- 4. iOS SwiftでUISplitViewControllerを使用する3
- 5. Swift 3でGoogle Maps SDKを使用
- 6. 通信b/w iphone sdkのソケットを使用して2つのアプリケーション
- 7. Swift 3とRealmを使用してApple WatchとiPhoneを同期する
- 8. Swift 2プロジェクトでSwift 3ライブラリを使用する
- 9. iPhone 4sとiPhone 5(Swift)でアプリケーションが作成されない
- 10. iPhoneアプリケーションでPubSubフレームワークを使用する
- 11. iphoneアプリケーションでWi-Fiを使用する
- 12. Swift 3を使用したMapMyRunのOAuth2
- 13. Swiftを使用したJSONSerialization 3
- 14. Swift 3を使用してウェブサイトにログイン
- 15. Swift 3 NotificationCenterオブザーバのセレクタを使用
- 16. SegmentControl Swiftを使用したActionSheet 3
- 17. Swift 3を使用したJSONシリアル化
- 18. Swiftでストリームを使用しているSMTPサーバーへのソケット接続を開けよう3
- 19. Realm Swiftを使用したアプリケーションのクラッシュ
- 20. Xcode 8 - Swift 3 - アプリケーションを中断する
- 21. swift 3からswift 2.3に変換するか、iPhoneのアプリケーションからソースコードを取得する
- 22. iPhoneでCNNアプリケーションに使用したUI
- 23. Alternate Realityアプリケーションで使用するiphone camerOverlay
- 24. Swiftパッケージマネージャを使用してSwift 3パッケージをXcode 8に追加
- 25. iPhoneでSwift 3にメタルを設定する
- 26. プログラムで作成したボタンからiPhone(Swift 3)をポップアップ
- 27. symfony 3アプリケーションでバンドルエラーテンプレートを使用
- 28. 3層アプリケーションでユニティを使用する
- 29. ポッドを使ってswift 3で目的のCプロジェクトを使用
- 30. SwiftのSwift 3フレームワークを使用しています。2.3
問題を解決しましたか? –