我是 Cocoa 的新手,但设法建立并运行了一个连接(到 FTP),并且我为 NSInputStream iStream 设置了一个事件处理程序来提醒每个响应(这也有效)。
我设法得到的只是问候消息和连接超时 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;
}
以上似乎不会导致任何可用的事件。在 NSStreamEventHasSpaceAvailable 下键入它有时会给出响应,如果我通过不断创建新的连接实例向 ftp 发送垃圾邮件并在 oStream 有可用空间时继续发送一些命令。换句话说,没有什么“正确”的,所以我仍然不清楚如何正确地向连接发送命令。每次我想写入 oStream(以及 ftp)时,我是否应该打开 -> 写入 -> 关闭,然后我可以期待回复(iStream 上的 hasBytesAvailable 事件)吗?编辑:看起来不像。
出于某种原因,我发现很难找到任何关于这个问题的清晰教程。好像和我一样位置的不止几个:不清楚如何使用oStream write?
请!非常感谢任何可以帮助解决这个问题的一点点!
如果需要,我可以编写其余的代码。
- 查克