728x90
๋ฐ์ํ
Double Buffered Circular Queue๋ฅผ ์ด์ฉํด์ ํจํท ์ฃผ๊ณ ๋ฐ๊ธฐ๋ฅผ ๊ณต๋ถํ๋ค.
๊ณ ๋ฏผํ๊ณ ํ ํธ๋ฆฌ์คํ๊ณ , ๋๊ณ ๋ฐฅ๋จน๊ณ TV๋ณด๊ณ ์ฑ ๋ณด๊ณ , ๋ฐ์ ๋๊ฐ๋ค๊ฐ, ์๋ฃ์ ํ๋ ๋นจ๊ณ ...
๊ทธ๋ ๊ฒ 3์ผ์ ๋๋ค๊ฐ ๋จธ๋ฆฌ์ ๋ฒ๊ฐ ๋ง์์ 1์๊ฐ ๋์ ๋ฌดํ๋์ ๋ณด๋ฉด์ ์ฝ๋ฉํ๋ค.
์์ธ๋ก ๊ฐ๋จํ ๋ฌธ์ ํด๊ฒฐ >_<b
๋ ผ๋ฆฌ์ ์ผ๋ก ํ์ํ ์ฝ๋๋ง ์์ฑํ๋ฉด ๋๋๊ฑด๋ฐ, ๊ดํ if๋ฌธ ์ฌ๋ฟ ์จ์ ์กฐ๊ฑด๋ง๋ค ์ฒ๋ฆฌํ๋ ค๊ณ ํ์๋ค.
while(1) { ใif( Q.isFull() == false ){ // ํ๊ฐ ๊ฝ ์ ์ฐผ์ผ๋ฉด ใใrecvMsgSize = recv( clntSocket, Q.GetEnqPos(), Q.GetEnqSize() - PKTLEN, 0); ใใQ.Enq( recvMsgSize ); // ์ผ๋จ ์ฌ์ฉ๊ฐ๋ฅํ ๋จ์ ํฌ๊ธฐ ๋งํผ ๋ฐ์์ ํ์ ๋ฃ๋๋ค.. ใ} else { // ํ๊ฐ ๊ฐ๋ ์ฐจ๋ฉด ใใwhile( Q.isEmpty() == false ){ // ํ๊ฐ ๋น ๋๊น์ง ใใใif( Q.GetDeqSize() >= Q.GetSize() ){ // ๊ฐ์ ธ์ฌ ํจํท ํฌ๊ธฐ๊ฐ ํ ์ฌ์ด์ฆ๋ณด๋ค ํฌ๋ฉด ใใใใQ.DeQ( (char*)&pkt, Q.GetDeqSize() ); // ๋ํํ๊ณ ใใใ} else { // ํํฌ๊ธฐ๊ฐ ๊ฐ์ ธ์ฌ ํจํท ํฌ๊ธฐ๋ณด๋ค ์์ผ๋ฉด ใใใใrecvMsgSize = recv( clntSocket, Q.GetEnqPos(), Q.GetDeqSize() - Q.GetSize(), 0); ใใใใQ.Enq( recvMsgSize ); // ๋ถ์กฑํ ๋งํผ๋ง ๋ฐ์์ ํ์ ๋ฃ๋๋ค.. ใ}}} ใif( recvMsgSize == 0 ) error_handling(); // ๋ฐ์ ์ฌ์ด์ฆ๊ฐ 0์ด๋ฉด Disconnect๋ ๊ฒ. } |
์ ์ ๋ฐ๋์ ์์ด๋ฉด ์์์ ๊ตฌ์กฐ๊ฐ ์ต์ ํ๊ฐ ๋๋๊ตฌ๋...
์ญ์ ์ธ๊ฐ์ ๋๋ ์ ๋น๋กญ๊ตฐ...ใ
728x90
๋ฐ์ํ
'๊ฒ์ ํ๋ก๊ทธ๋๋ฐ > ๋คํธ์ํฌ ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
IPv4์์ IPv6๋ก ๋์ด๊ฐ๊ธฐ (0) | 2021.02.03 |
---|---|
๋๋ธ๋ฒํผ๋์ํํ VS ์ํํ (0) | 2021.02.03 |
Double Buffered Circular Queue๋ก ํจํท ์ฃผ๊ณ ๋ฐ๊ธฐ 1 (0) | 2021.02.03 |
๋๋ธ ๋ฒํผ๋ง๊ณผ ์ํ ๋ฒํผ๋ง ์์ (Double Buffering and Circular Buffering Examples) (0) | 2021.02.03 |
์ ํ ๋ฉํฐ ์ฐ๋ ๋ ์์ฝ ์๋ฒ (0) | 2021.02.02 |