2010-04-06 3 views
1

저는 Cocoa를 처음 사용했지만 FTP로 연결하여 작동하도록 관리했습니다. 모든 응답을 알리기 위해 NSInputStream iStream에 대한 이벤트 핸들러를 설정했습니다.).Cocoa NSOutputStream 연결로 보내기

내가 관리 할 수있는 것은 단순히 hello 메시지와 연결 제한 시간 60 초이며 제어 연결을 닫는 것입니다.

편집 : 내 질문이 OutputStream에 플러싱의 비 종료 방법이 될 것입니다 무엇을 열지> 마무리 -없이 "추측

유래를 검색하고 NSOutputStream의 많은 문제를 쓰기 찾은 후 (예를 들어 How to use NSOutputStream's write message?를) 및 내 구글 히트에 혼란 스러움이 많아서 내 질문을 해보려고했다.

나는 OutputStream에서 developer.apple.com 문서를 읽으려고 시도했지만, 나는 거의 불가능하다. 데이터 (이 경우에는 문자열)를 NSOutputStream oStream을 통해 "연결"에 연결하십시오.

- (IBAction) send_something: sender 
{ 
const char *send_command_char = [@"USER foo" UTF8String]; 
send_command_buffer = [NSMutableData dataWithBytes:send_command_char length:strlen(send_command_char) + 1]; 
uint8_t *readBytes = (uint8_t *)[send_command_buffer mutableBytes]; 
NSInteger byteIndex = 0; 
readBytes += byteIndex; 
int data_len = [send_command_buffer length]; 
unsigned int len = ((data_len - byteIndex >= 1024) ? 
        1024 : (data_len-byteIndex)); 
uint8_t buf[len]; 
(void)memcpy(buf, readBytes, len); 
len = [oStream write:(const uint8_t *)buf maxLength:len]; 
byteIndex += len; 
} 

위의 결과는 사용 가능한 이벤트가 아닌 것으로 보입니다. NSStreamEventHasSpaceAvailable 아래에 타이핑하면 새로운 연결 인스턴스를 계속 생성하고 oStream에 여유 공간이있을 때마다 일부 명령을 계속 보내서 ftp를 스팸하면 응답을 보냅니다. 다시 말해, "옳은"것도 없으므로 연결에 명령을 제대로 보내는 방법이 아직 불분명합니다. 나는 oStream (그리고 ftp)에 쓰기를 원할 때마다 close -> write -> close를해야하고, iStream에 대한 응답 (hasBytesAvailable 이벤트)을 기대할 수 있습니까? 편집 : 아니오처럼 보이지 않습니다.

어떤 이유로 나는이 문제에 대한 명확한 튜토리얼을 찾기가 매우 어렵습니다. 나와 같은 위치에 몇 개가있는 것처럼 보입니다. oStream 쓰기를 사용하는 방법이 불분명합니까?

주세요! 이 점을 분명히하는 데 도움이 될 수있는 조금이라도 대단히 감사합니다!

필요한 경우 나머지 코드를 작성할 수 있습니다.

답변

4

좋아, 10시간 28 개보기없이 답변/의견,하지만 난 그냥 매우 매우 친절 irssi 코더에서 좋은 도움으로 그것을 해결하기 때문에 즉, OK입니다 (더 엉덩이 핥아 없습니다 의도 한;)).

그는 내가 std :: endl'e it (개행 + 플러시)을 시도 했으므로 간단히 개행 문자 (\ n, 0x0A)를 추가하려고 시도했지만 완벽하게 작동했습니다!

+1

왜 작동합니까? 바이너리 데이터를 보내면 어떻게 될까요? –

관련 문제