ios - 使用未解析的标识符“套接字”
问题描述
试图在iOS中检查端口是否打开,swift4
socket(AF_INET, SOCK_STREAM, 0)
给出错误:使用未解析的标识符“套接字”
func isPortOpen(port: in_port_t) -> Bool {
let socketFileDescriptor = socket(AF_INET, SOCK_STREAM, 0)
if socketFileDescriptor == -1 {
return false
}
var addr = sockaddr_in()
let sizeOfSockkAddr = MemoryLayout<sockaddr_in>.size
addr.sin_len = __uint8_t(sizeOfSockkAddr)
addr.sin_family = sa_family_t(AF_INET)
addr.sin_port = Int(OSHostByteOrder()) == OSLittleEndian ? _OSSwapInt16(port) : port
addr.sin_addr = in_addr(s_addr: inet_addr("0.0.0.0"))
addr.sin_zero = (0, 0, 0, 0, 0, 0, 0, 0)
var bind_addr = sockaddr()
memcpy(&bind_addr, &addr, Int(sizeOfSockkAddr))
if Darwin.bind(socketFileDescriptor, &bind_addr, socklen_t(sizeOfSockkAddr)) == -1 {
return false
}
if listen(socketFileDescriptor, SOMAXCONN ) == -1 {
return false
}
return true
}
解决方案
推荐阅读
- elm - 榆树和单选按钮摇晃
- python - python3模块导入/命名困境
- java - 我需要仅使用循环替换数组中的字符。我不能做比这更高级的事情了。我应该怎么办?
- android - xml上的Android数据绑定注册侦听器用于自定义按钮
- r - 因果影响 R 包中的置信区间
- c++ - CMake 无法找到 Boost 库(VS 2017)
- hadoop - 我是hadoop的新手,正在学习基础知识。我最近安装了沙箱,但我无法运行 Hadoop 命令
- cassandra - 如何将 cassandra 结构复制到另一个实例
- javascript - Discord.js 服务器欢迎
- ios - 是否可以使用 XCode 9.3 在 Objective-C 项目中调试 Swift 4.1 框架?