0001    #if os(Linux)
0002        import Glibc
0003    #else
0004        import Darwin
0005    #endif
0006    
0007    public class HTTP {
0008      public var   serverSocket
HTTP.swift:31
    serverSocket = socket(AF_INET, Int32(SOCK_STREAM), 0)
HTTP.swift:33
    if (serverSocket > 0) {
HTTP.swift:54
    setsockopt(serverSocket, SOL_SOCKET, SO_RCVBUF, &bufferSize, socklen_t(sizeof(Int)))
HTTP.swift:58
    setsockopt(serverSocket, SOL_SOCKET, SO_NOSIGPIPE, &noSigPipe, socklen_t(sizeofValue(noSigPipe)))
HTTP.swift:61
    let serverBind = bind(serverSocket, sockaddr_cast(&serverAddress), socklen_t(UInt8(sizeof(sockaddr_in))))
: Int32 = 0 0009 public var serverAddress
HTTP.swift:45
    serverAddress = sockaddr_in(
HTTP.swift:61
    let serverBind = bind(serverSocket, sockaddr_cast(&serverAddress), socklen_t(UInt8(sizeof(sockaddr_in))))
: sockaddr_in? 0010 var bufferSize
HTTP.swift:54
    setsockopt(serverSocket, SOL_SOCKET, SO_RCVBUF, &bufferSize, socklen_t(sizeof(Int)))
: Int = 1024 0011 0012 func sockaddr_cast
HTTP.swift:61
    let serverBind = bind(serverSocket, sockaddr_cast(&serverAddress), socklen_t(UInt8(sizeof(sockaddr_in))))
(p: UnsafeMutablePointer<Void>) -> UnsafeMutablePointer<sockaddr> { 0013 return UnsafeMutablePointer<sockaddr>(p) 0014 } 0015 0016 public func echo(socket: Int32, _ output: String) { 0017 output.withCString { (bytes) in 0018 #if os(Linux) 0019 let flags = Int32(MSG_NOSIGNAL) 0020 #else 0021 let flags = Int32(0) 0022 #endif 0023 send(socket, bytes, Int(strlen(bytes)), flags) 0024 } 0025 } 0026 0027 public init(port: UInt16) { 0028 #if os(Linux) 0029 serverSocket = socket(AF_INET, Int32(SOCK_STREAM.rawValue), 0) 0030 #else 0031 serverSocket = socket(AF_INET, Int32(SOCK_STREAM), 0) 0032 #endif 0033 if (serverSocket > 0) { 0034 print("Socket init: OK") 0035 } 0036 0037 #if os(Linux) 0038 serverAddress = sockaddr_in( 0039 sin_family: sa_family_t(AF_INET), 0040 sin_port: port.htons(), 0041 sin_addr: in_addr(s_addr: in_addr_t(0)), 0042 sin_zero: (0, 0, 0, 0, 0, 0, 0, 0) 0043 ) 0044 #else 0045 serverAddress = sockaddr_in( 0046 sin_len: __uint8_t(sizeof(sockaddr_in)), 0047 sin_family: sa_family_t(AF_INET), 0048 sin_port: port.htons(), 0049 sin_addr: in_addr(s_addr: in_addr_t(0)), 0050 sin_zero: (0, 0, 0, 0, 0, 0, 0, 0) 0051 ) 0052 #endif 0053 0054 setsockopt(serverSocket, SOL_SOCKET, SO_RCVBUF, &bufferSize, socklen_t(sizeof(Int))) 0055 0056 #if !os(Linux) 0057 var noSigPipe : Int32 = 1 0058 setsockopt(serverSocket, SOL_SOCKET, SO_NOSIGPIPE, &noSigPipe, socklen_t(sizeofValue(noSigPipe))) 0059 #endif 0060 0061 let serverBind = bind(serverSocket, sockaddr_cast(&serverAddress), socklen_t(UInt8(sizeof(sockaddr_in)))) 0062 if (serverBind >= 0) { 0063 print("Server started at port \(port)") 0064 } 0065 } 0066 } 0067 0068 extension CUnsignedShort { 0069 func htons
HTTP.swift:48
      sin_port: port.htons(),
() -> CUnsignedShort { return (self << 8) + (self >> 8); } 0070 } 0071