You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is is somehow possible with this library to get the local IP address to which the socket is currently bound? E.g. I have following Android Java code which I need to translate to Swift
private static InetAddress getOutboundAddress(SocketAddress remoteAddress) {
InetAddress localAddress = null;
try {
DatagramSocket sock = new DatagramSocket();
// connect is needed to bind the socket and retrieve the local address later (it would return 0.0.0.0 otherwise)
sock.connect(remoteAddress);
localAddress = sock.getLocalAddress();
sock.disconnect();
sock.close();
} catch (Exception e) {
// ignore
}
return localAddress;
}
is there a way which is similar to localAddress = sock.getLocalAddress();?
The text was updated successfully, but these errors were encountered:
I think I found a way. I don't think there is another way of how you can get the local bound IP address, if there is please let me know. This is the solution I use currently
private static func getOutboundAddress(hostname: String, port: Int32) -> String {
var tmpDatagramSocket: Socket?
defer {
tmpDatagramSocket?.close()
}
var result: String = ""
do {
tmpDatagramSocket = try Socket.create(family: .inet, type: .datagram, proto: .udp)
try tmpDatagramSocket!.connect(to: hostname, port: port)
var addr_in = sockaddr_in()
addr_in.sin_len = UInt8(MemoryLayout.size(ofValue: addr_in))
addr_in.sin_family = sa_family_t(AF_INET)
var len = socklen_t(addr_in.sin_len)
_ = withUnsafeMutablePointer(to: &addr_in, {
$0.withMemoryRebound(to: sockaddr.self, capacity: 1) {
getsockname(tmpDatagramSocket!.socketfd, $0, &len)
}
})
let address = Socket.Address.ipv4(addr_in)
if let hostNameAndPort = Socket.hostnameAndPort(from: address) {
result = hostNameAndPort.hostname
}
} catch {
// ignore
}
return result
}
Maybe this could be added to the library in some way so that a bound address can be accessed easier?
Is is somehow possible with this library to get the local IP address to which the socket is currently bound? E.g. I have following Android Java code which I need to translate to Swift
is there a way which is similar to
localAddress = sock.getLocalAddress();
?The text was updated successfully, but these errors were encountered: