diff --git a/example/main.c b/example/main.c
index 4e63dec..e3cfc8f 100644
--- a/example/main.c
+++ b/example/main.c
@@ -2,7 +2,7 @@
 #include "servicepoint.h"
 
 int main(void) {
-    UdpConnection *connection = sp_connection_open("localhost:2342");
+    UdpConnection *connection = sp_connection_open_ipv4(127,0,0,1,2342);
     if (connection == NULL)
         return 1;
 
diff --git a/include/servicepoint.h b/include/servicepoint.h
index dbce14d..7c0c819 100644
--- a/include/servicepoint.h
+++ b/include/servicepoint.h
@@ -979,13 +979,32 @@ void sp_connection_free(UdpConnection */*notnull*/ connection);
  * # Examples
  *
  * ```C
- * CConnection connection = sp_connection_open("172.23.42.29:2342");
+ * UdpConnection connection = sp_connection_open("172.23.42.29:2342");
  * if (connection != NULL)
  *     sp_connection_send_command(connection, sp_command_clear());
  * ```
  */
 UdpConnection *sp_connection_open(char */*notnull*/ host);
 
+/**
+ * Creates a new instance of [UdpConnection].
+ *
+ * returns: NULL if connection fails, or connected instance
+ *
+ * # Examples
+ *
+ * ```C
+ * UdpConnection connection = sp_connection_open_ipv4(172, 23, 42, 29, 2342);
+ * if (connection != NULL)
+ *     sp_connection_send_command(connection, sp_command_clear());
+ * ```
+ */
+UdpConnection *sp_connection_open_ipv4(uint8_t ip1,
+                                       uint8_t ip2,
+                                       uint8_t ip3,
+                                       uint8_t ip4,
+                                       uint16_t port);
+
 /**
  * Sends a [TypedCommand] to the display using the [UdpConnection].
  *
diff --git a/src/connection.rs b/src/connection.rs
index 5feb528..d6ffb83 100644
--- a/src/connection.rs
+++ b/src/connection.rs
@@ -1,5 +1,6 @@
 use servicepoint::{Connection, Packet, TypedCommand, UdpConnection};
 use std::ffi::{c_char, CStr};
+use std::net::{Ipv4Addr, SocketAddrV4};
 use std::ptr::NonNull;
 
 /// Creates a new instance of [UdpConnection].
@@ -9,7 +10,7 @@ use std::ptr::NonNull;
 /// # Examples
 ///
 /// ```C
-/// CConnection connection = sp_connection_open("172.23.42.29:2342");
+/// UdpConnection connection = sp_connection_open("172.23.42.29:2342");
 /// if (connection != NULL)
 ///     sp_connection_send_command(connection, sp_command_clear());
 /// ```
@@ -28,17 +29,29 @@ pub unsafe extern "C" fn sp_connection_open(
     Box::into_raw(Box::new(connection))
 }
 
-//#[no_mangle]
-//pub unsafe extern "C" fn sp_connection_open_ipv4(
-//    host: SocketAddrV4,
-//) -> *mut UdpConnection {
-//    let connection = match servicepoint::UdpConnection::open(host) {
-//        Err(_) => return std::ptr::null_mut(),
-//        Ok(value) => value,
-//    };
-//
-//    Box::into_raw(Box::new(UdpConnection(connection)))
-//}
+/// Creates a new instance of [UdpConnection].
+///
+/// returns: NULL if connection fails, or connected instance
+///
+/// # Examples
+///
+/// ```C
+/// UdpConnection connection = sp_connection_open_ipv4(172, 23, 42, 29, 2342);
+/// if (connection != NULL)
+///     sp_connection_send_command(connection, sp_command_clear());
+/// ```
+#[no_mangle]
+pub unsafe extern "C" fn sp_connection_open_ipv4(
+    ip1: u8, ip2: u8, ip3: u8, ip4: u8,
+    port: u16,
+) -> *mut UdpConnection {
+    let addr = SocketAddrV4::new(Ipv4Addr::from( [ip1, ip2, ip3, ip4]), port);
+    let connection = match UdpConnection::open(addr) {
+        Err(_) => return std::ptr::null_mut(),
+        Ok(value) => value,
+    };
+    Box::into_raw(Box::new(connection))
+}
 
 // /// Creates a new instance of [SPUdpConnection] for testing that does not actually send anything.
 // ///