我一直在尝试在swift中编写一个简单的TCP/IP服务器,但我无法想出一个解决方案。我已经尝试过在这里和网上其他地方搜索,但我找不到适用于我正在使用的最新版本的快速版本:swift中的基本tcp/ip服务器
Apple Swift 2.1版(swiftlang-700.1。 101.6铛-700.1.76)
目标:x86_64的-苹果darwin14.5.0
操作系统:
的Mac OS X 10.10.5 Yosemitte
下面的代码已经被制成,它是基于这样一个:Socket Server Example with Swift
import Foundation
var sock_fd: Int32
var server_addr_size: Int
sock_fd = socket(AF_INET, SOCK_STREAM, 0);
if sock_fd == -1 {
print("Failure: creating socket")
exit(EXIT_FAILURE)
}
server_addr_size = sizeof(sockaddr_in)
var server_addr = NSMutableData(length: server_addr_size)!
memset(UnsafeMutablePointer<Void>(server_addr.mutableBytes), 0, server_addr_size)
var addr = UnsafeMutablePointer<sockaddr_in>(server_addr.mutableBytes)
addr.memory.sin_len = __uint8_t(server_addr_size)
addr.memory.sin_family = sa_family_t(AF_INET) // chooses IPv4
addr.memory.sin_port = 12321 // chooses the port
let bind_server = bind(sock_fd, UnsafePointer<sockaddr>(server_addr.mutableBytes), socklen_t(server_addr_size))
if bind_server == -1 {
print("Failure: binding port")
exit(EXIT_FAILURE)
}
if listen(sock_fd, 5) == -1 {
print("Failure: listening")
exit(EXIT_FAILURE)
}
var client_addr = NSMutableData(length: server_addr_size)!
memset(UnsafeMutablePointer<Void>(client_addr.mutableBytes), 0, server_addr_size)
let client_fd = accept(sock_fd, UnsafeMutablePointer<sockaddr>(client_addr.mutableBytes), UnsafeMutablePointer<socklen_t>(bitPattern: server_addr_size))
if client_fd == -1 {
print("Failure: accepting connection")
exit(EXIT_FAILURE);
}
至呼叫接受,因为它可以通过所提到的代码的输出中可以看到失败:
失败:接受连接
程序以退出码结束:1
除了帮助修复代码之外,我还想知道如何读写连接。
谢谢,
ģOliveira的
您还需要输出'strerror(errno)'来查看accept()失败的原因。 –
感谢您的建议,这使得它更容易识别问题。 –