diff --git a/src/main/java/org/eclipse/mdm/api/odsadapter/filetransfer/CORBAFileServer.java b/src/main/java/org/eclipse/mdm/api/odsadapter/filetransfer/CORBAFileServer.java
index bb54a03..d92c9b5 100644
--- a/src/main/java/org/eclipse/mdm/api/odsadapter/filetransfer/CORBAFileServer.java
+++ b/src/main/java/org/eclipse/mdm/api/odsadapter/filetransfer/CORBAFileServer.java
@@ -23,6 +23,7 @@
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.net.SocketException;
+import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.List;
@@ -67,6 +68,7 @@
 	private static final int DEFAULT_BUFFER_SIZE = 100_000;
 	private static final int SOCKET_TIMEOUT = 5_000;
 	private static final String INTERFACE_NAME_PROPERTY = "org.eclipse.mdm.api.odsadapter.filetransfer.interfaceName";
+	private static final String HOST_NAME_PROPERTY = "org.eclipse.mdm.api.odsadapter.filetransfer.hostname";
 
 	private final CORBAFileServerIF fileServer;
 	private final AoSession aoSession;
@@ -207,8 +209,8 @@
 					 * socket's accept method is called, the registration is done asynchronously!
 					 */
 					fileServer.getForInstanceBySocket(aoSession, fileLink.getRemotePath(), elemId.aid, elemId.iid,
-							InetAddress.getLocalHost().getHostAddress(), serverSocket.getLocalPort());
-				} catch (CORBAFileServerException | IOException e) {
+							serverSocket.getInetAddress().getHostAddress(), serverSocket.getLocalPort());
+				} catch (CORBAFileServerException e) {
 					LOGGER.error("Unable to initialize socket stream, awaiting socket timeout.", e);
 				}
 			}).start();
@@ -220,6 +222,17 @@
 	}
 
 	private InetAddress getInterfaceAddress() throws SocketException {
+		String hostnameProperty = System.getProperty(HOST_NAME_PROPERTY);
+		if (!StringUtils.isEmpty(hostnameProperty)) {
+			LOGGER.debug("Using host name '" + hostnameProperty + "' for file transfer.");
+			try {
+				return InetAddress.getByName(hostnameProperty);
+			} catch (UnknownHostException e) {
+				LOGGER.warn("Specified host name '" + hostnameProperty + "' cannot be used for file transfer.", e);
+				// continue with lookup by interface name
+			}
+		}
+
 		String property = System.getProperty(INTERFACE_NAME_PROPERTY);
 		if (StringUtils.isEmpty(property)) {
 			LOGGER.debug("Using no specified interface for file transfer, property not set.");
@@ -321,7 +334,7 @@
 			}).start();
 
 			int localPort = serverSocket.getLocalPort();
-			String localHostName = serverSocket.getInetAddress().getHostName();
+			String localHostName = serverSocket.getInetAddress().getHostAddress();
 			try {
 				return fileServer.saveForInstanceBySocket(aoSession, fileLink.getFileName(), "", elemId.aid, elemId.iid,
 						localHostName, localPort);
