【发布时间】:2016-06-17 14:44:39
【问题描述】:
我正在 Swift 3 中为 macOS 和 iOS 构建一个小型且易于使用的 TCP 框架(有一天它会支持 Linux)。这是我探索的新事物,这就是为什么存在潜在的混乱和错误的原因。
我的内部代码如下所示:
if Darwin.send(self._fileDescriptor._value, data.withUnsafeBytes { $0 }, data.count, 0)._isMinusOne() {
try Error._throw(type: .network)
}
发送小包不是问题,但是当我尝试发送大包时,我的应用程序崩溃了(我试图一次发送 1590784 个字节)。之后我调查了问题,发现我错过了可以传递给Darwin.send 函数的限制。我一直在网上搜索以找到一个好的答案,但不幸的是,我找到了一些关于这个特定主题的数字(65K、1500 等)。
我的问题是我应该在Darwin.send 函数中使用什么最大缓冲区大小才能始终保持安全?
我在该特定领域没有那么丰富的经验,所以如果我的问题的答案能解释为什么您认为您选择的尺寸是最好和最安全的选择,那就太好了。
【问题讨论】:
-
XY 问题。定义“崩溃”。提供症状。证据。问题。把猜测留在家里。
-
@EJP 这个问题很清楚! JeremyP 给了我很好的反馈来解决我的问题。我没有问为什么我的应用程序首先崩溃了!
标签: swift sockets tcp darwin swift3