我正在将我为Android编写的应用程序移植到ios,但我无法打开与服务器的多个连接。我的Android应用程序使用2个套接字连接到我的服务器(我的服务器正在侦听端口4444和4445),并且都需要两个套接字来回传输不同类型的数据。我试图迅速做到这一点:
var inp : NSInputStream?
var out : NSOutputStream?
var inStreamUnmanaged:Unmanaged<CFReadStream>?
var outStreamUnmanaged:Unmanaged<CFWriteStream>?
CFStreamCreatePairWithSocketToHost(nil, host, UInt32(port), &inStreamUnmanaged, &outStreamUnmanaged)
var inStreamUnmanaged2:Unmanaged<CFReadStream>?
var outStreamUnmanaged2:Unmanaged<CFWriteStream>?
CFStreamCreatePairWithSocketToHost(nil, host, UInt32(port2), &inStreamUnmanaged2, &outStreamUnmanaged2)
inp = inStreamUnmanaged?.takeRetainedValue()
out = outStreamUnmanaged?.takeRetainedValue()
out!.open()
inp!.open();
let str = "Hello"
var x = [UInt8](str.utf8)
out!.write(&x, maxLength: x.count)
var readByte :UInt8 = 0
while inp!.hasBytesAvailable {
inp!.read(&readByte, maxLength: 1)
}
要连接到我的服务器:
clientSocket =serverSocket.accept();
System.out.println("0-new connection");
nSocket = nSSocket.accept();
System.out.println("1-new connection");
但是,服务器控制台中仅打印第一条消息。我迅速检查了辅助端口的值,它的确是4445,并且一切看起来正确。问题是什么?
var inp : NSInputStream?
var out : NSOutputStream?
var inStreamUnmanaged:Unmanaged<CFReadStream>?
var outStreamUnmanaged:Unmanaged<CFWriteStream>?
CFStreamCreatePairWithSocketToHost(nil, host, UInt32(port), &inStreamUnmanaged, &outStreamUnmanaged)
// YOU never use this in your code !!!
var inStreamUnmanaged2:Unmanaged<CFReadStream>?
var outStreamUnmanaged2:Unmanaged<CFWriteStream>?
CFStreamCreatePairWithSocketToHost(nil, host, UInt32(port2), &inStreamUnmanaged2, &outStreamUnmanaged2)
inp = inStreamUnmanaged?.takeRetainedValue()
out = outStreamUnmanaged?.takeRetainedValue()
out!.open()
inp!.open();
let str = "Hello"
var x = [UInt8](str.utf8)
out!.write(&x, maxLength: x.count)
var readByte :UInt8 = 0
while inp!.hasBytesAvailable {
inp!.read(&readByte, maxLength: 1)
}
...
var inp2 : NSInputStream?
var out2 : NSOutputStream?
.....
inp2 = inStreamUnmanaged2?.takeRetainedValue()
out2 = outStreamUnmanaged2?.takeRetainedValue()
.....
// and use it!
在打开流之前,不会创建基础连接
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句