diff --git a/rpcs3/Emu/Cell/lv2/sys_net.cpp b/rpcs3/Emu/Cell/lv2/sys_net.cpp index bd1852d13b..2a3a047757 100644 --- a/rpcs3/Emu/Cell/lv2/sys_net.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_net.cpp @@ -1603,6 +1603,13 @@ error_code sys_net_bnet_connect(ppu_thread& ppu, s32 s, vm::ptr(psa_in->sin_port); name.sin_addr.s_addr = std::bit_cast(psa_in->sin_addr); +#ifdef _WIN32 + // Windows doesn't support sending packets to 0.0.0.0 but it works on unixes, send to 127.0.0.1 instead + if (name.sin_addr.s_addr == 0x00000000) + { + name.sin_addr.s_addr = 0x0100007F; + } +#endif } else { @@ -2608,6 +2615,14 @@ error_code sys_net_bnet_sendto(ppu_thread& ppu, s32 s, vm::cptr buf, u32 l name.sin_port = std::bit_cast(psa_in->sin_port); name.sin_addr.s_addr = std::bit_cast(psa_in->sin_addr); +#ifdef _WIN32 + // Windows doesn't support sending packets to 0.0.0.0 but it works on unixes, send to 127.0.0.1 instead + if (name.sin_addr.s_addr == 0x00000000) + { + name.sin_addr.s_addr = 0x0100007F; + } +#endif + char ip_str[16]; inet_ntop(AF_INET, &name.sin_addr, ip_str, sizeof(ip_str)); sys_net.trace("Sending to %s:%d", ip_str, psa_in->sin_port);