// UdpSoketWin smoke: aç/kapat yaşam döngüsü + REUSEADDR (aynı portu iki soket — // çok-fikocad senaryosu) + kapalıyken güvenli çağrılar. Gerçek yayın/alım ağ ve // güvenlik duvarına bağlı olduğundan BURADA doğrulanmaz (RUNTIME TEST listesinde). #include "fiko_test.hpp" #include "orkestra_soket_win.hpp" using namespace fiko; FIKO_TEST(udp_soket_ac_kapat_ve_reuseaddr) { UdpSoketWin a; FIKO_KONTROL(!a.acikMi()); FIKO_KONTROL(a.ac(48123)); FIKO_KONTROL(a.acikMi() && a.port() == 48123); UdpSoketWin b; // aynı port ikinci soket (REUSEADDR — çok-süreç dinleme) FIKO_KONTROL(b.ac(48123)); a.kapat(); FIKO_KONTROL(!a.acikMi() && a.port() == 0); b.kapat(); // Yeniden açılabilir (WSA ref sayacı düzgün). FIKO_KONTROL(a.ac(48124)); a.kapat(); } FIKO_TEST(udp_soket_kapaliyken_guvenli) { UdpSoketWin s; std::string veri; FIKO_KONTROL(!s.gonderYayin("x")); // kapalı → false, çökme yok FIKO_KONTROL(!s.al(veri)); s.kapat(); // iki kez kapat güvenli s.kapat(); } FIKO_TEST(udp_soket_buyuk_datagram_reddi) { UdpSoketWin s; FIKO_KONTROL(s.ac(48125)); FIKO_KONTROL(!s.gonderYayin(std::string(2000, 'x'))); // MTU üstü tek datagram yok s.kapat(); }