GCDAsyncSocket을 사용하여 신속하게 TCP 소켓 클라이언트를 작성하려고하는데 문제가 하나 있습니다. 내 코드에서 나는 여기에 NSTextField있는 (전화 상자)를 가지고하는 것이 내 코드입니다 : 내 TCP 서버에 액세스하려고 터미널에서 telnet 명령을 사용하면스위프트 클라이언트의 TCP 서버로부터 응답 받기
import Cocoa
class AppDelegate: NSObject, NSApplicationDelegate
{
@IBOutlet weak var window: NSWindow!
@IBOutlet weak var box: NSTextField!
var bsocket: GCDAsyncSocket!
func applicationDidFinishLaunching(aNotification: NSNotification?)
{
bsocket = GCDAsyncSocket(delegate: self, delegateQueue: dispatch_get_main_queue())
var port:UInt16 = 8090
if (!bsocket.connectToHost("localhost", onPort: port, error: nil))
{
println("Error")
}
else
{
println("Connecting...")
}
var request:String = "Arn.Preg:3302:"
var data:NSData = request.dataUsingEncoding(NSUTF8StringEncoding)!
bsocket.writeData(data, withTimeout: -1.0, tag: 0)
bsocket.readDataWithTimeout(-1.0, tag: 0)
}
func applicationWillTerminate(aNotification: NSNotification?)
{
// Insert code here to tear down your application
}
func socket(socket : GCDAsyncSocket, didReadData data:NSData, withTag tag:UInt16)
{
var response = NSString(data: data, encoding: NSUTF8StringEncoding)
println("Received Response")
box.stringValue = box.stringValue + "\n" + response
}
func socket(socket : GCDAsyncSocket, didConnectToHost host:String, port p:UInt16)
{
println("Connected to \(host) on port \(p).")
box.stringValue = box.stringValue + "\n" + "Connected to \(host) on port \(p)."
}
}
func socket(socket : GCDAsyncSocket, didReadData data:NSData, withTag tag:UInt16)
,이 결과입니다. 내가 입력 그런
Marzuk:~ marzukrashid$ telnet localhost 8090
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Arn.TipoSer:XPL0:
, "3302 : Arn.Preg"는 "서버가 반환 :
Marzuk:~ marzukrashid$ telnet localhost 8090
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Arn.TipoSer:XPL0:
Arn.Preg:3302:
Arn.Resp:3302=329351:
나는": 3302 Arn.Preg "를 입력하면, 서버는이 반환 Arn.Resp : 3302 = 329351 : "이것은 달성하고자하는 결과입니다. 응용 프로그램의 NSTextField에"Arn.Resp : 3302 = 329351 : "을 표시하고 싶습니다. 지금, 코드를 실행할 때, 프로그램은 "Connecting ...", "Connected to 127.0.0.1 on port 8090"및 "Received Response"를 응용 프로그램 자체의 NSTextField에 기록합니다. "포트 8090에 127.0.0.1에 연결됨"이 표시됩니다. 및 "Arn.TipoSer : XPl0 :"로 표시해야하지만 "Arn.Resp : 3302 = 329351 :"이 표시되지 않습니다.
내 질문에 내 코드가이 일을하지 않는 이유는 무엇이며 어떻게 코드를 수정해야합니까?
감사합니다.
죄송합니다. 코드를 변경하는 것을 잊어 버렸습니다. 방금 편집했습니다. – Marzukr