[英]Client-server application with Swift and C++
我正在嘗試創建用於在客戶端(Swift,iOS)和服務器(C ++,Windows)之間傳輸數據的簡單應用程序。 我想使用套接字傳輸數據。 所以我有很多工作的服務器(我可以使用c ++客戶端連接到它),但是當我嘗試使用Swift的NSStream連接到它時-我遇到了錯誤。 也許我想念什么? 在Windows和iOS上的c ++服務器之間使用套接字連接的規則是什么。
因此,一段時間后,我在客戶端上收到“ ErrorOccured”消息。 這是我與NSStream連接的代碼:
let SERVER_IP: String = "MY_SERVER_IP"
let SERVER_PORT: Int = MY_PORT
class ViewController: UIViewController, NSStreamDelegate {
var inputStream: NSInputStream? = nil
var outputStream: NSOutputStream? = nil
override func viewDidLoad() {
super.viewDidLoad()
NSStream.getStreamsToHostWithName(SERVER_IP, port: SERVER_PORT, inputStream: &inputStream, outputStream: &outputStream)
if inputStream != nil && outputStream != nil {
inputStream!.delegate = self
outputStream!.delegate = self
inputStream!.scheduleInRunLoop(.mainRunLoop(), forMode: NSDefaultRunLoopMode)
outputStream!.scheduleInRunLoop(.mainRunLoop(), forMode: NSDefaultRunLoopMode)
inputStream!.open()
outputStream!.open()
}
}
func stream(aStream: NSStream, handleEvent eventCode: NSStreamEvent) {
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:
break
}
}
}
好吧,看來問題出在服務器端。 此代碼完美地工作。 我的錯 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.