@eskimo Thanks a lot for your prompt reply on the issue.
I followed your post to solve my problem. I made changes to my code and ended up getting
Network Unreachable. I have little knowlegde in Darwin framework. Could you please take a look at this and tell me how to modify or add the
IP BOUND IF part.
Code Block // Create new socket let newSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP) |
guard newSocket > 0 else { throw ConnectionError.createSocketFailed } |
|
// Enable broadcast on socket |
var broadcastEnable = Int32(1); |
let ret = setsockopt(newSocket, SOL_SOCKET, SO_BROADCAST, &broadcastEnable, socklen_t(MemoryLayout<UInt32>.size)); |
if ret == -1 { |
debugPrint("Couldn't enable broadcast on socket") |
close(newSocket) |
throw ConnectionError.enableBroadcastFailed |
} |
|
// Bind socket if needed |
if shouldBeBound { |
var saddr = sockaddr(sa_len: 0, sa_family: 0, |
sa_data: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) |
self.address.sin_addr = INADDR_ANY |
memcpy(&saddr, &self.address, MemoryLayout<sockaddr_in>.size) |
self.address.sin_addr = INADDR_BROADCAST |
let isBound = bind(newSocket, &saddr, socklen_t(MemoryLayout<sockaddr_in>.size)) |
if isBound == -1 { |
debugPrint("Couldn't bind socket") |
close(newSocket) |
throw ConnectionError.bindSocketFailed |
} |
} |