我是 Cocoa 的新手,但设法建立并运行连接(到 FTP),并且我为 NSInputStream iStream 设置了一个事件处理程序来提醒每个响应(这也有效)。

我设法得到的只是 hello 消息和连接超时 60 秒,关闭控制连接。

编辑:我想我的问题是“如果不关闭->打开刷新输出流的非终止方式是什么?

搜索stackoverflow并发现很多NSOutputStream写入问题(例如 如何使用NSOutputStream的写消息?)以及我的谷歌点击中有很多混乱,我想我应该尝试问自己的问题:

我尝试阅读关于 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;
}

上述似乎不会产生任何可用的事件。如果我通过不断创建新的连接实例并在 oStream 有可用空间时不断发送一些命令来向 ftp 发送垃圾邮件,则在 NSStreamEventHasSpaceAvailable 下键入它有时会给出响应。换句话说,没有什么是“正确的”,所以我仍然不清楚如何正确地向连接发送命令。每次我想写入 oStream(从而写入 ftp)时,我是否应该打开 -> 写入 -> 关闭,然后我可以期待回复(iStream 上的 hasBytesAvailable 事件)吗?编辑:看起来不像没有。

出于某种原因,我发现很难找到关于这个问题的任何清晰的教程。看来和我有同样处境的还有不少:不清楚如何使用oStream写入?

请!任何可以帮助解决这个问题的小建议都将不胜感激!

如果需要的话我可以编写其余的代码。

  • 查克
有帮助吗?

解决方案

好吧,10 小时 28 次浏览,没有答案/评论,但这没关系,因为我刚刚在一位非常友好的 irssi 编码员的帮助下解决了这个问题(无意舔屁股;))。

他建议我尝试 std::endl'e 它(换行符+刷新),所以我尝试简单地添加换行符( ,0x0A)并且它工作得很好!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top