@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 |
| } |
| } |