2014-10-20 2 views
3

서버에 메시지를 보내고 iPhone을 사용하여 응답을 보내려고합니다. ? 나는 사용하여 서버에 연결할 수 =GCDAsyncSocket readData가 호출되지 않음

telnet 123.123.123.1 6000 
Trying 123.123.123.1... 
Connected to 123.123.123.1. 
Escape character is '^]'. 
?VERSION 
OK 
VERSION=PROTOCOL: 1.1.0 

는 VERSION은 수신

VERSION 질문을 이해

OK 상태 내 질문

때문에 서버의 응답입니다 I 동일한 일을하려고하지만 xcode를 사용하려고합니다.

그래서 이걸 내 viewDidLoad에 넣습니다.

dispatch_queue_t mainQueue = dispatch_get_main_queue(); 
asyncSocket = [[GCDAsyncSocket alloc]initWithDelegate:self delegateQueue:mainQueue]; 
asyncSocket.delegate = self; 

NSString *host = @"123.123.123.1"; 
uint16_t port = 6000; 

NSLog(@"Connecting to \"%@\" on port %hu...", host, port); 

NSError *error = nil; 
if (![asyncSocket connectToHost:host onPort:port withTimeout:5.0 error:&error]) 
{ 
    NSLog(@"Error connecting: %@", error); 
} 
else 
{ 
    NSLog(@"Connecting..."); 
} 

그리고 나는 다음과 같은 코드는

-(void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port: 
(UInt16)port 

{ 
NSLog(@"socket:%p didConnectToHost:%@ port:%hu", sock, host, port); 

// We're just going to send a test string to the server. 

NSString *myStr = @"?VERSION"; 
NSData *myData2 = [myStr dataUsingEncoding:NSUTF8StringEncoding]; 

[asyncSocket writeData:myData2 withTimeout:-1 tag:0]; 


} 

을 연결 보여주는 그리고 그것은 슬프게도이라는 결코 극복

-(void)socket:(GCDAsyncSocket *)sock didWriteDataWithTag:(long)tag{ 
NSLog(@"WRITING"); 
[asyncSocket readDataToData:[GCDAsyncSocket LFData] withTimeout:-1 tag:0]; 
} 

을 썼다 보여주기 위해 다음과 같은 한

- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag 
{ 


NSString *tempString = [[NSString alloc]initWithData:data 
             encoding: NSUTF8StringEncoding]; 


} 

난 잃어버린 정말로 도움이 필요합니다.

답변

3

동시에 쓰고 말하기 때문입니다. 먼저 [asyncSocket writeData:myData2 withTimeout:-1 tag:0];didWriteDataWithTag으로 전화하십시오 ([asyncSocket readDataToData:[GCDAsyncSocket LFData] withTimeout:-1 tag:0];). 당신은 한 스레드에 - dispatch_get_main_queue() - 한 번에 두 가지를 할 수 없습니다.

+0

나는 내 게시물에서 그것을 변경, 나는 원래 이런 식으로 시도하고 그것은 다른 접근 방식을 시도했다 그래서 작동하지 않았다. 서버에서 아무 것도받을 수 없습니다. 원래 제안 이외의 제안 사항이 있습니까? – Appdev

+1

대신 [[asyncSocket readDataWithTimeout : -1 tag : 0]; ' – Michal

+0

응답을 보내주십시오. 슬프게도 응답이 없습니다. 나는 이틀 동안이 일에 매달 렸습니다. 텔넷과 함께 "터미널"을 사용하기 때문에 클라이언트/서버간에 통신이 올바르게 작동한다고 가정 할 수 있습니까? – Appdev