Godot ๋ฒ์ :
3.2.1 ์์
๋ฒ์ ์ ํฌํจํ OS / ์ฅ์น :
์๋์ฐ 10
๋ด๊ฐ ์ฌ์ฉํ๋ ๋ผ์ฐํฐ๋ Orange Livebox์
๋๋ค. ์ค๋ช
.xml์ ์ด๋ค ๋ถ๋ถ์ด ์ ์ฉํ๊ณ ์์ ํ๊ฒ ๊ณต์ ํ ์ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋ํ ๋๋ ๊ทธ๊ฒ์ ๋ํ ๊ด๋ฆฌ์ ์ก์ธ์ค ๊ถํ์ด ์์ต๋๋ค.
๋ฌธ์ ์ค๋ช
:
ํฌํธ ๋งคํ์ ์ถ๊ฐํ๋ฉด delete_port_mapping๊ณผ ๊ด๋ จ๋ ์ค๋ฅ๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค. ํฌํธ ๋งคํ์ด ์ ๋๋ก ์ถ๊ฐ ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ฉฐ ๋์ค์ ์ค๋ฅ์์ด ์ญ์ ํ ์ ์์ต๋๋ค.
์ด ์ง๋ฌธ์ ์ค๋ช
๋ ๋ฌธ์ https://godotengine.org/qa/65365/delete_port_mapping-condition-i-0-is-true
E 0:00:03.211 delete_port_mapping: Condition "i != (0)" is true. Returned: UPNP::upnp_result(i)
<C++ Source> modules/upnp/upnp_device.cpp:90 @ delete_port_mapping()
<Stack Trace> UPNPTest.gd:8 @ _ready()
์ถ๋ ฅ
์ฌํ ๋จ๊ณ :
๋ค์์ ์คํํ์ญ์์ค.
var upnp = UPNP.new()
upnp.discover()
upnp.add_port_mapping(4200)
์ต์ ์ฌ์์ฐ ํ๋ก์ ํธ :
upnp ๋ฒ๊ทธ repro.zip
์ด๊ฒ์ ๋ด ํ๋ก์ ํธ์์๋ ๋ฐ์ํ๋ ๋งค์ฐ ์ฑ๊ฐ์ ๋ฒ๊ทธ์ ๋๋ค.
ํธ์ง : ๋๊ตฐ๊ฐ์ด ๋์ผํ ๋ฒ๊ทธ๊ฐ ์๊ณ ์ด ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๋ฉด upnp.add_port_mapping์ด ์ํํ๋ ๊ฒ๊ณผ ๋์ผํ ๊ธฐ๋ณธ ๊ฒ์ดํธ์จ์ด์ ํฌํธ ๋งคํ์ ์ง์ ์ถ๊ฐํ์ฌ ์ค๋ฅ๋ฅผ ์ฐํ ํ ์ ์์ต๋๋ค.
upnp = UPNP.new()
var result = upnp.discover()
if result == UPNP.UPNP_RESULT_SUCCESS:
var gateway = upnp.get_gateway()
gateway.add_port_mapping(4200)
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๊ฒ์ ๋ด ํ๋ก์ ํธ์์๋ ๋ฐ์ํ๋ ๋งค์ฐ ์ฑ๊ฐ์ ๋ฒ๊ทธ์ ๋๋ค.
ํธ์ง : ๋๊ตฐ๊ฐ์ด ๋์ผํ ๋ฒ๊ทธ๊ฐ ์๊ณ ์ด ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๋ฉด upnp.add_port_mapping์ด ์ํํ๋ ๊ฒ๊ณผ ๋์ผํ ๊ธฐ๋ณธ ๊ฒ์ดํธ์จ์ด์ ํฌํธ ๋งคํ์ ์ง์ ์ถ๊ฐํ์ฌ ์ค๋ฅ๋ฅผ ์ฐํ ํ ์ ์์ต๋๋ค.