2011-11-07 1 views
-1

에 BOOL를 사용하는 방법?어떻게 아래로는 IMAP 메일 서버를 연결해야 IBAction를 IOS

- (BOOL) connectToHost: (NSString*) hostname 
{ 
    socket_ = socket(AF_INET, SOCK_STREAM, 0); 
    if (socket_ < 0) { 
     NSLog(@"socket"); 
    } 

    struct sockaddr_in addr; 
    memset(&addr, 0, sizeof(addr)); 
    addr.sin_family = AF_INET; 
    addr.sin_port = htons(993); 

    struct hostent* host = gethostbyname([hostname UTF8String]); 
    unsigned int** ptr = (unsigned int **) host->h_addr_list; 
    while (*ptr != NULL) { 
     addr.sin_addr.s_addr = *(*ptr); 

     if (connect(socket_, (struct sockaddr *) &addr, sizeof(addr)) == 0) { 
      break; 
     } 

     ptr++; 
    } 
    if (*ptr == NULL) { 
     NSLog(@"connect"); 
    } 

    return [[self readLine] isEqualToString: @"* OK"]; 
} 
+0

IBACTION을 사용하여 일반적인 클릭 방식을 만들고 내부에서 connectToHost를 호출하면됩니다. –

답변

3

... 다른 방법으로 부르시겠습니까?

- (IBAction) connectButtonClicked:(id)sender { 
    [self connectToHost:@"Your host name goes here, variable _or_ constant! :D"]; 
} 
+1

'BOOL'이 false로 평가되면, 사용자에게 연결이 실패했다는 것을 알려주는'UIAlertView'를 표시하는 것과 같은 것을 할 수 있습니다. – darvids0n

+0

@ darvids0n : 좋은 지적, 나는 그것을 추가 할 것이다. – Ryan

+0

** [self connectToHost : @ "귀하의 호스트 이름은 여기에 변수, _or_ constant! : D"]; ** 호스트 이름 인 하나의 인수 만 가져오고 텍스트 필드 "imap.gmail.com"에서 호스트 이름을 가져옵니다. 코드는 ** [self connectToHost : @ "imap.gmail.com"] ** 과 같습니다. 중단 점을 넣으면 위의 코드에서 종료됩니다. ** if (connect (socket_, (struct sockaddr *) & addr , sizeof (addr)) == 0) {break; ** 수정을위한 아이디어 나 제안이 있습니까? –

관련 문제