我在上编写简单的Telnet客户端。我连接到localhost上的9052端口,并发送三个简单的命令。这是我的密码:
import Cocoa
import CocoaAsyncSocket
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
var socket : GCDAsyncSocket!
func applicationDidFinishLaunching(aNotification: NSNotification) {
requestIdentity()
}
func requestIdentity() -> Bool {
socket = GCDAsyncSocket(delegate: self, delegateQueue: dispatch_get_main_queue())
let port : UInt16 = 9052
do {
try socket.connectToHost("127.0.0.1", onPort: port, withTimeout: 2.0)
} catch let e {
print("Error \(e) accured while connecting to \(port) on 127.0.0.1")
return false
}
print("connection working")
return true
}
func applicationWillTerminate(aNotification: NSNotification) {
}
func socket(socket : GCDAsyncSocket, didReadData data : NSData, withTag : UInt16) {
let response = String(data: data, encoding: NSUTF8StringEncoding)
print("Got response : \(response)")
}
func socket(socket : GCDAsyncSocket, didConnectToHost host : String, port p: UInt16) {
print("Connected to host \(host) on port \(p)")
var request = "AUTHENTICATE \"1728390\"\n"
var data = request.dataUsingEncoding(NSUTF8StringEncoding)
socket.writeData(data, withTimeout: -1.0, tag: 0)
socket.readDataWithTimeout(-1.0, tag: 0)
request = "SIGNAL NEWNYM\n"
data = request.dataUsingEncoding(NSUTF8StringEncoding)
socket.writeData(data, withTimeout: -1.0, tag: 0)
socket.readDataWithTimeout(-1.0, tag: 0)
request = "QUIT\n"
data = request.dataUsingEncoding(NSUTF8StringEncoding)
socket.writeData(data, withTimeout: -1.0, tag: 0)
}
}我有意关闭端口9052,但套接字总是“连接”-它不会抛出任何错误,也不会提供任何输出-它只是什么都不做。怎么解决这个问题?
发布于 2016-02-07 15:27:36
找到解决方案:当连接超时时,
func socketDidDisconnect(sock: GCDAsyncSocket!, withError err: NSError!)被称为。
https://stackoverflow.com/questions/35251603
复制相似问题