Iperf: UDP์— ๋Œ€ํ•œ ์ˆ˜์‹ ๊ธฐ ๋Œ€์—ญํญ์ด ๋ˆ„๋ฝ ๋œ JSON ์ถœ๋ ฅ

์— ๋งŒ๋“  2017๋…„ 05์›” 19์ผ  ยท  9์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: esnet/iperf

UDP ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์ตœ์‹  ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋ฉด ์ „์†ก ๋Œ€์—ญํญ์€ ํ•ญ์ƒ 1Mbits / sec์ž…๋‹ˆ๋‹ค. iperf3 -u ํ•˜๋ฉด ์ˆ˜์‹ ๊ธฐ์˜ ๋Œ€์—ญํญ์ด ๋‚ฎ์•„ ์ง€๋ฏ€๋กœ ํŒจํ‚ท ์†์‹ค์ด ๋ฐœ์ƒํ•˜๋ฉด ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1.25 MBytes  1.05 Mbits/sec  0.000 ms  0/918 (0%)  sender
[  4]   0.00-10.08  sec   820 KBytes   667 Kbits/sec  22.755 ms  323/911 (35%)  receiver

๊ทธ๋Ÿฌ๋‚˜ iperf3 -u -J ์˜ JSON ์ถœ๋ ฅ์—๋Š” ์ˆ˜์‹ ๊ธฐ์˜ ๋Œ€์—ญํญ์ด ๋ถ„๋ช…ํžˆ ๋ˆ„๋ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. "bits_per_second"๋Š” ๋ณด๋‚ธ ์‚ฌ๋žŒ์˜ ์ผ๋ฐ˜์ ์ธ 1Mbit / sec์ž…๋‹ˆ๋‹ค.

...
"sum":  {
                        "start":        0,
                        "end":  10.325652122497559,
                        "seconds":      10.325652122497559,
                        "bytes":        1310904,
                        "bits_per_second":      1048716.9241566667,
                        "jitter_ms":    17.814066799414466,
                        "lost_packets": 294,
                        "packets":      918,
                        "lost_percent": 32.026143790849673
                },
...

TCP ๋ณด๊ณ ์„œ์—๋Š” "sum_sent"๋ฐ "sum_received"JSON ํ‚ค๊ฐ€ ์žˆ์ง€๋งŒ UDP ๋ณด๊ณ ์„œ์—๋Š” "sum"๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.

JSON์— ์ œ๊ณต๋œ ๋ฐ์ดํ„ฐ์—์„œ UDP ์ˆ˜์‹ ๊ธฐ์˜ ๋Œ€์—ญํญ์„ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

bug json

๋ชจ๋“  9 ๋Œ“๊ธ€

๊ถŒ๋ฆฌ. ์ด๊ฒƒ์€ ์•„์ฃผ ์˜ค๋ž˜๋œ ๋ฒ„๊ทธ๋กœ, ์ฒ˜์Œ๋ถ€ํ„ฐ iperf3์— ์žˆ์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” # 562์— ๋Œ€ํ•œ ์ž‘์—…์„ ํ•  ๋•Œ ๊ทธ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค (์™œ ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ?). ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ง€์ ํ–ˆ๋“ฏ์ด UDP ํ…Œ์ŠคํŠธ๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก๊ณผ ์ˆ˜์‹ ์ž ์ธก ํ†ต๊ณ„๋ฅผ ๋ณ„๋„๋กœ ๋ถ„๋ฅ˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ณด๊ณ  ๋œ ๋‚ด์šฉ์ด ํด๋ผ์ด์–ธํŠธ์ธ์ง€, ๋ณด๋‚ธ ์‚ฌ๋žŒ์ธ์ง€, ์•„๋‹ˆ๋ฉด ๋‘˜ ์ค‘ ํ•˜๋‚˜์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. TCP๊ฐ€ ๋‹ค๋ฅธ ์ด์œ ๋„ ๋ถ„๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด JSON์„ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ๊ณผ ์–ด๋–ค ์ข…๋ฅ˜์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ UDP ํ…Œ์ŠคํŠธ๊ฐ€์ด ์ ์—์„œ TCP์™€ ๋น„์Šทํ•œ ํ†ต๊ณ„ ์ถœ๋ ฅ์„ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค (๋ฐœ์‹ ์ž ์ธก๊ณผ ์ˆ˜์‹ ์ž ์ธก ๋ชจ๋‘ ๊ฐœ๋ณ„์ ์œผ๋กœ). ์‚ฐ์ถœ. (# 562์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ฒซ ๋ฒˆ์งธ ์ถœ๋ ฅ ์Šค ๋‹ˆํŽซ์— ์ œ์‹œ ํ•œ UDP์— ๋Œ€ํ•œ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜์žˆ๋Š” ์ถœ๋ ฅ์„ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ์–ด์จŒ๋“  ์ถœ๋ ฅ์„ ์ฝ์œผ๋ ค๊ณ ํ•˜๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์—์ด ๊ฒฝ์šฐ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์— ๋Œ€ํ•ด ๋œ ๊ฑฑ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.)

UDP JSON ์ถœ๋ ฅ์— ๋Œ€ํ•ด์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” JSON ์ถœ๋ ฅ์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋ ค๊ณ ํ•˜์ง€๋งŒ ๋ฌด์—‡์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. JSON ์ถœ๋ ฅ์˜ ์˜ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    }],
            "sum":  {
                    "start":        0,
                    "end":  10.004644870758057,
                    "seconds":      10.004644870758057,
                    **"bytes":        4364528380,**
                    "bits_per_second":      3484585580.8672519,
                    "jitter_ms":    2.3222640079292773,
                    "lost_packets": 2102766,
                    "packets":      2989403,
                    "lost_percent": 70.34066668160834
            },

๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š”์ด ๋ฐ”์ดํŠธ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ „์†ก ๋œ ๋ฐ”์ดํŠธ์ž…๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ์ˆ˜์‹  ๋œ ๋ฐ”์ดํŠธ์ž…๋‹ˆ๊นŒ?

์–ธ์ œ ์ˆ˜์ • ๋˜๋‚˜์š”? JSON ์ถœ๋ ฅ์—์„œ โ€‹โ€‹์ˆ˜์‹ ์ž์˜ bps๋ฅผ ๊ฐ€์ ธ์™€์•ผํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ง€๊ธˆ์€ ๋กœ๋“œ๋งต์— ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์‹ค์ œ๋กœ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์ƒํƒœ ์‹œ์Šคํ…œ ๋ฐ ํ”„๋กœํ† ์ฝœ์„ ๋ณ€๊ฒฝํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ์–ด๋ด๋„ ๋ ๊นŒ์š” ... UDP๋กœ ํ…Œ์ŠคํŠธํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ json์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ณ 

end.sum.bits_per_second     AND 
end.sum.lost_packets

์ „์†ก์ด ์„œ๋ฒ„ ์ธก์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ  ๋ฐ›๋Š”์ง€์— ๋Œ€ํ•ด ๊ณต์ •ํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์–‘๋ฐฉํ–ฅ ์ „์†ก / ์ˆ˜์‹ ์ด ์„ฑ๊ณตํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? ๋‹ค์Œ์—์„œ ํ…์ŠคํŠธ ์ถœ๋ ฅ์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00  sec  1.26 MBytes  1.06 Mbits/sec  0.000 ms  0/81 (0%)  sender
[  5]   0.00-10.00  sec  1.26 MBytes  1.06 Mbits/sec  0.052 ms  0/81 (0%)  receiver

@awardblvr : "์„ฑ๊ณต"์„ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ํ•œ ๊ฐ€์ง€ ์ธก์ • ๊ฐ’์€ end.sum.lost_packets ์ด 0์ด๋ฉด ์ˆ˜์‹ ์ž๊ฐ€ ์†์‹ค ๋œ ํŒจํ‚ท์„ ๊ฐ์ง€ํ•˜์ง€ ๋ชปํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ…Œ์ŠคํŠธ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ๋‹ค๊ณ  ์„ ์–ธ ํ•  ๋•Œ ์—ฌ์ „ํžˆ ๋น„ํ–‰์ค‘์ธ ํŒจํ‚ท์— ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ๊ณผ ๊ด€๋ จ๋œ ์ผ๋ถ€ ์˜ˆ์™ธ์  ์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ...,์ด ONE json ์ถœ๋ ฅ์„ ์ฝ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ ์„œ๋ฒ„-> ํด๋ผ์ด์–ธํŠธ ๋ฐ ํŒจํ‚ท์—์„œ ์ „์†ก ๋œ ํŒจํ‚ท
ํด๋ผ์ด์–ธํŠธ์—์„œ ์ „์†ก-> ์„œ๋ฒ„๊ฐ€ ๋„์ฐฉํ–ˆ์œผ๋ฉฐ ์†์‹ค์ด ์—†์Œ
ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ˆ˜์‹  ํ•œ ํŒจํ‚ท์˜ ํŒจํ‚ท :

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ฏฟ๋Š”๋‹ค :

end.sum.packets.
end.sum.lost_packets
end.sum_receiver.packets <--- NEW PATCH
end.sum_receiver.lost_packets <--- NEW PATCH

๋‚ด๊ฐ€ ํ‹€๋ ธ๋‹ค๋ฉด ๋‚˜๋ฅผ ๊ณ ์ณ์ฃผ์„ธ์š”!

"์ข…๋ฃŒ": {
"sum": {
"์ข…๋ฃŒ": 10.00,
"์ดˆ": 10.00,
"bits_per_second": 1058280.26,
"๋ฐ”์ดํŠธ": 1322892,
"ํŒจํ‚ท": 81,
"์‹œ์ž‘": 0,
"jitter_ms": 0.056,
"lost_packets": 0,
"lost_percent": 0
},
"์ŠคํŠธ๋ฆผ": [
{
"udp": {
"์ข…๋ฃŒ": 10.00,
"์†Œ์ผ“": 5,
"์ดˆ": 10.00,
"bits_per_second": 1058280.26,
"๋ฐ”์ดํŠธ": 1322892,
"ํŒจํ‚ท": 81,
"out_of_order": 0,
"์‹œ์ž‘": 0,
"jitter_ms": 0.056,
"lost_packets": 0,
"lost_percent": 0
}
}
],
"sum_sender": {<--- NEW with PATCH
"์ข…๋ฃŒ": 10.00,
"์ดˆ": 10.00,
"bits_per_second": 1058280.26,
"๋ฐ”์ดํŠธ": 1322892,
"ํŒจํ‚ท": 81,
"์‹œ์ž‘": 0,
"jitter_ms": 0,
"lost_packets": 0,
"lost_percent": 0
},
"sum_receiver": {<--- NEW with PATCH
"์ข…๋ฃŒ": 10.00,
"์ดˆ": 10.00,
"bits_per_second": 1058271.16,
"๋ฐ”์ดํŠธ": 1322892,
"ํŒจํ‚ท": 81,
"์‹œ์ž‘": 0,
"jitter_ms": 0.0568,
"lost_packets": 0,
"lost_percent": 0
}

๊ฐ์‚ฌ

-ใ…

2018 ๋…„ 9 ์›” 13 ์ผ ๋ชฉ์š”์ผ ์˜ค์ „ 10:04 Bruce A. Mah [email protected]
์ผ๋‹ค :

@awardblvr https://github.com/awardblvr : ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์ด ์–ด๋–ป๊ฒŒ
"์„ฑ๊ณต"์„ ์ •์˜ํ•˜์‹ญ์‹œ์˜ค. ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์€
end.sum.lost_packets๊ฐ€ 0์ด๋ฉด ์ˆ˜์‹ ์ž๊ฐ€ ์†์‹ค์„ ๊ฐ์ง€ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
ํŒจํ‚ท. ๊ทธ๋Ÿฌ๋‚˜ ์ด์™€ ๊ด€๋ จ๋œ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์™ธ์  ์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
ํด๋ผ์ด์–ธํŠธ๊ฐ€
ํ…Œ์ŠคํŠธ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Œ์„ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/esnet/iperf/issues/584#issuecomment-421079759 ๋˜๋Š” ์Œ์†Œ๊ฑฐ
์‹ค
https://github.com/notifications/unsubscribe-auth/AFE_e3JCfwSxfr_negMTgZCq8Z6xIkdlks5uapAegaJpZM4NgILa
.

UDP์— ๋Œ€ํ•œ ๋…๋ฆฝ์  ์ธ Tx / Rx B / W๊ฐ€ ๋ถ€์กฑํ•˜์—ฌ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ–ˆ์Šต๋‹ˆ๋‹ค.

TxRate ๋ฐ Drop %๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ RxMbps๋ฅผ ๊ณ„์‚ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

TxMbps = result.Mbps
RxMbps = TxMbps - (TxMbps * (result.lost_percent / 100))

์„œ๋ฒ„ --- 10Mbps --- SRX (๋ผ์šฐํ„ฐ) --- 5Mbps ----- ํด๋ผ์ด์–ธํŠธ
(SRX ์ธํ„ฐํŽ˜์ด์Šค์— ์ ์šฉ๋œ ํŠธ๋ž˜ํ”ฝ ์…ฐ์ดํผ)

๋‚˜๋Š” 20Mbps์—์„œ ์–‘๋ฐฉํ–ฅ์„ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

iPerf3 UDP ์—…๋กœ๋“œ :

์›๊ฒฉ : 10.8.8.100
๋กœ์ปฌ : 10.9.9.222
ํ”„๋กœํ† ์ฝœ / ํฌํŠธ : UDP / 33333
์‹œ์ž‘ ์‹œ๊ฐ„ : 2021 ๋…„ 1 ์›” 10 ์ผ ์ผ์š”์ผ 03:51:23 GMT
๊ธฐ๊ฐ„ (์ดˆ) : 10
์ „์†ก ์†๋„ : 20.0Mbps
์ˆ˜์‹  ์†๋„ : 9.58Mbps
์ง€ํ„ฐ : 0.7ms
๋ถ„์‹ค ๋œ ํŒจํ‚ท : 8990
์†์‹ค ๋น„์œจ : 52.07 %
๋กœ์ปฌ CPU : 9.03 %
์›๊ฒฉ CPU : 0.76 %

iPerf3 UDP ๋‹ค์šด๋กœ๋“œ :

์›๊ฒฉ : 10.8.8.100
๋กœ์ปฌ : 10.9.9.222
ํ”„๋กœํ† ์ฝœ / ํฌํŠธ : UDP / 33333
์‹œ์ž‘ ์‹œ๊ฐ„ : 2021 ๋…„ 1 ์›” 10 ์ผ ์ผ์š”์ผ 03:51:38 GMT
๊ธฐ๊ฐ„ (์ดˆ) : 10
์ „์†ก ์†๋„ : 20.0Mbps
์ˆ˜์‹  ์†๋„ : 4.82Mbps
์ง€ํ„ฐ : 0.49ms
๋ถ„์‹ค ๋œ ํŒจํ‚ท : 13172
์†์‹ค๋ฅ  : 75.9 %
๋กœ์ปฌ CPU : 2.5 %
์›๊ฒฉ CPU : 8.26 %

@ hakujin22 , "_RxMbps = TxMbps-(TxMbps * (result.lost_percent / 100)) _"์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ž‘๋™ ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์›๊ฒฉ ๋์ด ์•„๋‹Œ ๋กœ์ปฌ์—์„œ๋งŒ ์ˆ˜์ง‘๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ „์†ก ํ•œ ๋ฐ์ดํ„ฐ์—์„œ ์„œ๋ฒ„-ํด๋ผ์ด์–ธํŠธ ์ข…๋‹จ ๊ฐ„ ๋งํฌ ๋Œ€์—ญํญ์€ 5Mbps์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—…๋กœ๋“œ๊ฐ€ ์„œ๋ฒ„ ๋Œ€ ํด๋ผ์ด์–ธํŠธ๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ์„œ๋ฒ„์—์„œ 10Mbps๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์„œ๋ฒ„์—์„œ SRX ์ฒ˜๋ฆฌ๋Ÿ‰์— ๋Œ€ํ•œ ์ธก์ •์น˜์ด๋ฉฐ ์ข…๋‹จ ๊ฐ„์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@ bmah888 , --server-output ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹  ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ UDP JSON ์š”์•ฝ ํ†ต๊ณ„ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜ / ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ๋‹ค์Œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. "_sum_received_"๋ฐ "_sum_sent_"JSON ์„น์…˜์ด ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ UDP _end_ ์š”์•ฝ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ์ด ์„น์…˜์€ _sum_ ์„น์…˜์„ ๋Œ€์ฒด ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค .
  2. "_sum_received_"์—๋Š” ์ˆ˜์‹ ์ž์˜ 0์ด ์•„๋‹Œ ๋ฐ์ดํ„ฐ ๋งŒ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํด๋ผ์ด์–ธํŠธ๋Š” -R ๋˜๋Š” ์–‘๋ฐฉํ–ฅ์ด ์‚ฌ์šฉ๋  ๋•Œ์ด๋ฅผ ์„ค์ •ํ•˜์ง€๋งŒ ์†ก์‹ ์ž ๋งŒ์žˆ๋Š” ๊ฒฝ์šฐ 0์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  3. "_sum_sent_"๋Š” ์œ ์‚ฌํ•œ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ •๋˜์ง€๋งŒ ๋ฐœ์‹ ์ž ๋˜๋Š” ์–‘๋ฐฉํ–ฅ์— ๋Œ€ํ•ด ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ํ˜„์žฌ ์†”๋ฃจ์…˜๊ณผ ์—ญ ํ˜ธํ™˜๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์œ ์šฉํ•œ ์ ‘๊ทผ ๋ฐฉ๋ฒ•์ด ๋  ์ˆ˜ ์žˆ์Œ์„ ์Šน์ธํ•œ๋‹ค๋ฉด ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰