gpt4 book ai didi

ios - 带身份验证的 Swift Telnet 流

转载 作者:行者123 更新时间:2023-11-28 15:22:39 25 4
gpt4 key购买 nike

以下代码在使用 TCP 连接到许多设备时效果很好。但是尝试连接到要求用户名和密码的设备时,却没有。

当通过 telnet 连接 putty 时,像 Cisco SX 80 这样的设备会在连接后返回登录提示。

但是当使用下面的代码时,OpenCompleted事件发生,然后HasBytesAvaialable发生,但是缓冲区是空的。

将 socketSecurityLevel 设置为任何其他值会引发错误,因为它是普通的 telnet,而不是 SSL。

关于我遗漏的任何想法?

func openTcpStream(){
if !tcpHost.isEmpty{
Stream.getStreamsToHost(withName: tcpHost, port: tcpPort, inputStream: &inputStream, outputStream: &outputStream)
if inputStream != nil{
let input: InputStream = inputStream!
input.delegate = self
input.schedule(in: RunLoop.current, forMode: RunLoopMode.defaultRunLoopMode)
self.inputStream!.setProperty(StreamSocketSecurityLevel.none, forKey: Stream.PropertyKey.socketSecurityLevelKey)
input.open()

}
if outputStream != nil{
let output: OutputStream = outputStream!
output.delegate = self
output.schedule(in: RunLoop.current, forMode: RunLoopMode.defaultRunLoopMode)
self.outputStream!.setProperty(StreamSocketSecurityLevel.none, forKey: Stream.PropertyKey.socketSecurityLevelKey)
output.open()

}
}

func stream(_ aStream: Stream, handle eventCode: Stream.Event) {
var event = ""
switch eventCode {
case Stream.Event.openCompleted:
if writeQueue != ""{
writeTcpStream(bufferToWrite: writeQueue)

}
case Stream.Event.hasBytesAvailable:
if inputStream != nil{
readTcpStream(inputStream: inputStream)

}
default:()

}

func readTcpStream(inputStream: InputStream?){
if inputStream != nil{
let input = inputStream!
var readBuffer: NSString = ""
var readByte = [UInt8](repeating:0, count: 512)
while input.hasBytesAvailable{
input.read(&readByte, maxLength: readByte.count)
let tempString = NSString(bytes: readByte, length: readByte.count, encoding: String.Encoding.utf8.rawValue)
if tempString?.length != nil{
readBuffer = (readBuffer as String) + (tempString! as String) as NSString
}
}
}

最佳答案

telnet 协议(protocol)不仅仅是套接字上的纯文本。您可以在 RFC854 中找到详细信息

更新:有一个更新的规范 RFC5198如果不需要 Unicode,则可能不需要实现它。

关于ios - 带身份验证的 Swift Telnet 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45719381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com