diff --git a/include/stdplus/net/addr/ip.hpp b/include/stdplus/net/addr/ip.hpp
index f21275f..0f5b30f 100644
--- a/include/stdplus/net/addr/ip.hpp
+++ b/include/stdplus/net/addr/ip.hpp
@@ -2,9 +2,13 @@
 #include <netinet/in.h>
 
 #include <stdplus/hash.hpp>
+#include <stdplus/numeric/endian.hpp>
+#include <stdplus/numeric/str.hpp>
+#include <stdplus/str/conv.hpp>
 #include <stdplus/variant.hpp>
 
 #include <algorithm>
+#include <stdexcept>
 #include <variant>
 
 namespace stdplus
@@ -49,6 +53,30 @@
     }
 };
 
+template <>
+struct FromStr<In4Addr>
+{
+    template <typename CharT>
+    constexpr In4Addr operator()(std::basic_string_view<CharT> sv) const
+    {
+        constexpr StrToInt<10, uint8_t> sti;
+        uint32_t addr = {};
+        for (size_t i = 0; i < 3; ++i)
+        {
+            auto loc = sv.find(".");
+            addr |= sti(sv.substr(0, loc));
+            addr <<= 8;
+            sv.remove_prefix(loc == sv.npos ? sv.size() : loc + 1);
+            if (sv.empty())
+            {
+                throw std::invalid_argument("Missing addr data");
+            }
+        }
+        addr |= sti(sv);
+        return in_addr{hton(addr)};
+    }
+};
+
 struct In6Addr : in6_addr
 {
     constexpr In6Addr() noexcept : in6_addr() {}
diff --git a/src/net/addr/ip.cpp b/src/net/addr/ip.cpp
index 466c509..81d2a4a 100644
--- a/src/net/addr/ip.cpp
+++ b/src/net/addr/ip.cpp
@@ -1 +1,6 @@
 #include <stdplus/net/addr/ip.hpp>
+
+namespace stdplus
+{
+template In4Addr FromStr<In4Addr>::operator()(std::string_view) const;
+}
diff --git a/test/net/addr/ip.cpp b/test/net/addr/ip.cpp
index 7d0cace..625633e 100644
--- a/test/net/addr/ip.cpp
+++ b/test/net/addr/ip.cpp
@@ -14,6 +14,22 @@
     std::hash<In4Addr>{}(In4Addr{});
 }
 
+TEST(FromStr, In4Addr)
+{
+    EXPECT_THROW(fromStr<In4Addr>(""), std::invalid_argument);
+    EXPECT_THROW(fromStr<In4Addr>("0"), std::invalid_argument);
+    EXPECT_THROW(fromStr<In4Addr>("0.0.0"), std::invalid_argument);
+    EXPECT_THROW(fromStr<In4Addr>("0.0.0."), std::invalid_argument);
+    EXPECT_THROW(fromStr<In4Addr>(".0.0.0"), std::invalid_argument);
+    EXPECT_THROW(fromStr<In4Addr>("0.0.0.0.0"), std::invalid_argument);
+    EXPECT_THROW(fromStr<In4Addr>("x.0.0.0"), std::invalid_argument);
+    EXPECT_THROW(fromStr<In4Addr>("ff.0.0.0"), std::invalid_argument);
+    EXPECT_THROW(fromStr<In4Addr>("256.0.0.0"), std::overflow_error);
+
+    EXPECT_EQ((In4Addr{}), fromStr<In4Addr>("0.0.0.0"));
+    EXPECT_EQ((In4Addr{192, 168, 1, 1}), fromStr<In4Addr>("192.168.001.1"));
+}
+
 TEST(EqualOperator, In6Addr)
 {
     EXPECT_EQ((In6Addr{0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff}),
