現在、私はNSNetServiceクラスを使用して2つのIOSデバイスを接続しているプログラムに取り組んでいます。私は両方のデバイスを接続することができますが、私はどのようにgetInoutStream関数を使用してデータを送信するのかわかりません。どんな仲間が私を助けることができますか?Swift NSNetServiceクラスでgetInoutStreamを使用してデータを送信する方法
-1
A
答えて
1
なぜ使用しないのですかmultipeer?これは、あなたがやろうとしていることに対してはるかに簡単な解決策です。また、NSNetServiceにはいくつかの既知のバグがあります。ただし、NSNetServiceでBonjour接続を設定することで、2つの間でデータを送信します。 getInputStreamメソッドは、タイプUnsafeMutablePointerの引数が必要です。
public func getInputStream(inputStream: UnsafeMutablePointer<NSInputStream?>, outputStream: UnsafeMutablePointer<NSOutputStream?>) -> Bool
var inputStream : NSInputStream?
var outputStream : NSOutputStream?
let success = service.getInputStream(&inputStream, outputStream: &outputStream)
それからちょうどメモリストリームを使用してデータを書き込み、それがリスナーポートに渡されますよ。
これは、完成したコードです:
この関数は127.0.0.1
func initNetworkCommunication(){
var host : CFString = "127.0.0.1"
var port : UInt32 = 7001
var readstream : Unmanaged<CFReadStream>?
var writestream : Unmanaged<CFWriteStream>?
CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, host, port, &readstream, &writestream)
inputstream = readstream!.takeRetainedValue()
outputstream = writestream!.takeRetainedValue()
inputstream.delegate = self
outputstream.delegate = self
inputstream.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)
outputstream.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)
inputstream.open()
の接続を開始し、これはストリームのためであるIO:
func stream(aStream: NSStream, handleEvent eventCode: NSStreamEvent) { //This is the stream IO function. It allows RW of the stream
switch (eventCode){
case NSStreamEvent.ErrorOccurred:
NSLog("ErrorOccurred")
break
case NSStreamEvent.EndEncountered:
NSLog("EndEncountered")
break
case NSStreamEvent.None:
NSLog("None")
break
case NSStreamEvent.HasBytesAvailable:
NSLog("HasBytesAvaible")
var buffer = [UInt8](count: 4096, repeatedValue: 0)
if (aStream == inputstream){
while (inputstream.hasBytesAvailable){
var len = inputstream.read(&buffer, maxLength: buffer.count)
if(len > 0){
var output = NSString(bytes: &buffer, length: buffer.count, encoding: NSUTF8StringEncoding)
if (output != ""){
NSLog("server said: %@", output!)
}
}
}
}
break
case NSStreamEvent.allZeros:
NSLog("allZeros")
break
case NSStreamEvent.OpenCompleted:
NSLog("OpenCompleted")
break
case NSStreamEvent.HasSpaceAvailable:
NSLog("HasSpaceAvailable")
break
default:
// default code here
break
}
関連する問題
- 1. swiftを使用してサーバ(api)にデータを送信する方法
- 2. freertosを使用してリアルタイムでデータを送信する方法
- 3. Dojo - ダイアログ・フォームを使用してデータを送信する方法
- 4. nodejsのソケットを使用してデータを送信する方法
- 5. PHP:Windowsタスクスケジューラを使用してPOSTデータを送信する方法
- 6. webrequestクラスメソッドを使用してデータを送信する方法は?
- 7. Robotクラスを使用してJavaでCtrl + Zキーイベントを送信する方法
- 8. ReactでSuperAgentを使用してJSONデータを正しく送信する方法
- 9. ソースポートを使用してJavaでTCP/IPでデータを送受信する方法
- 10. PHPを使用してデータを送信する方法は何ですか?
- 11. Swiftを使用してパラメータとデータをWebサーバーに送信する3
- 12. javascriptを使用してPHPページ間でデータを送信する方法
- 13. POSTメソッドを使用してXDRでJSONデータを送信する方法
- 14. HTMLでXMLを使用してデータを送受信する方法
- 15. フェッチを使用してreact-reduxでデータを送信する方法
- 16. androidでphpを使用してサーバーにString Arrayデータを送信する方法
- 17. 同じDatagramPacketを使用してUDPでデータを送受信する方法
- 18. C#でHTTPリクエストを使用してJSON GETデータを送信する方法
- 19. アンドロイドでJSONを使用してデータをPHPページに送信する方法
- 20. androidでhttppostを使用して休憩データを送信する方法
- 21. 角度2を使用してHTTPサービスでデータを送信する方法
- 22. javaメール送信者を使用してemalでリンクを送信する方法
- 23. Spark Structured Streaming用のTCPソケットを使用してデータを送信する方法
- 24. リストビューでトグルボタンを使ってデータを送信する方法android
- 25. MPIを使ってEigen :: MatrixXdでデータを送信する方法
- 26. クラスをワイヤで送信する方法
- 27. カールを使用してデータを送信
- 28. django restフレームワークコメントフォームデータを送信しない(角度jを使用してjsonデータを送受信する方法)
- 29. xamppでphpmailerを使用してメールを送信する方法
- 30. asp.netでsmtpを使用してメールを送信する方法
は、返信用のありがとう。私はこれらのことすべてを行ったが、私は両方のデバイス間でメッセージを送信したいので、何をすべきか? – Avim
@AvinashMulewa私はあなたに言った。メモリストリームを使用し、「成功」に書き込みます。 – RhysO
私はすぐに初心者ですので、コードを送ってください。 – Avim