2010-04-06 60 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具有可用空間時繼續發送某些命令來垃圾郵件,則有時會給出響應。換句話說,沒有什麼是「正確的」,所以我仍然不清楚如何正確地向連接發送命令。我應該打開 - >寫 - >關閉每次我想寫入oStream(並因此到ftp),然後我可以期待答覆(iStream上hasBytesAvailable事件)? 編輯:看起來不像它沒有。

出於某種原因,我發現很難找到有關此問題的任何明確教程。似乎有很多與我相同的位置:不清楚如何使用oStream寫入?

請!任何一點可以幫助清除這一點非常感謝!

如果需要,我可以編寫其餘的代碼。

回答

4

好了,所以10小時28組的意見和沒有答案/評論,但沒關係,因爲我只是從一個非常非常友好IRSSI編碼一些很好的幫助解決了這個問題(沒有屁股舔打算;))。

他建議我試着std :: endl'e它(換行符+沖洗),所以我試着簡單地添加新行字符(\ n,0x0A),它的工作完美!

+1

爲什麼這樣嗎?如果我發送二進制數據怎麼辦? – 2016-09-26 21:32:05

相關問題