我将我为Android编写的应用程序移植到ios,我无法打开超过1个连接到我的服务器。我的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");
但是,只有第一条消息打印在服务器控制台中。我在swift中仔细检查了辅助端口的值,它确实是4445,一切看起来都正确。有什么问题?
答案 0 :(得分:0)
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!
在打开流
之前,不会创建基础连接