【发布时间】:2018-09-28 07:57:37
【问题描述】:
我创建了一个小脚本,它是一个套接字客户端,等待服务器消息。我的目标是相反,一个服务器打开并侦听客户端消息,但它当然也调用发送消息。我已经包括了代表,以便“收听”新消息。任何想法 ?谢谢!
import UIKit
class ViewController: UIViewController, StreamDelegate {
struct connectionStream {
static var inp :InputStream?
static var out :OutputStream?
}
var inputStream: InputStream!
var outputStream: OutputStream!
override func viewDidLoad() {
super.viewDidLoad()
let addr = "127.0.0.1"
let port = 12345
Stream.getStreamsToHost(withName: addr, port: port, inputStream: &connectionStream.inp, outputStream: &connectionStream.out)
inputStream = connectionStream.inp!
outputStream = connectionStream.out!
self.inputStream.delegate = self
self.outputStream.delegate = self
self.inputStream.schedule(in: RunLoop.current, forMode: RunLoop.Mode.default)
self.outputStream.schedule(in: RunLoop.current, forMode: RunLoop.Mode.default)
self.inputStream.open()
self.outputStream.open()
}
@IBAction func messageToHololens(_ sender: Any) {
self.sendToHololens("Hello Hololens")
}
func sendToHololens(_ messageValue : String) {
let length_message = messageValue.count
self.outputStream!.write(messageValue, maxLength: length_message)
print("message envoyé")
}
func disconnect() {
self.inputStream.close()
self.outputStream.close()
}
func stream(_ aStream: Stream, handle eventCode: Stream.Event) {
if aStream === inputStream {
switch eventCode {
case Stream.Event.openCompleted:
print("client accepté")
case Stream.Event.hasBytesAvailable:
var buffer = [UInt8](repeating: 0, count: 4096)
while (self.inputStream.hasBytesAvailable){
let len = self.inputStream.read(&buffer, maxLength: buffer.count)
if(len > 0){
let output = NSString(bytes: &buffer, length: len, encoding: String.Encoding.utf8.rawValue)
if (output != ""){
print("server said:", output!)
}
}
}
default:
break
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
【问题讨论】: