inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

Session #2

SocketAsyncEventArgs 가 연속된 패킷을 모으는 역할을 하나요?

252

asoft82

작성한 질문수 3

0

[테스트1]

아래 처럼 클라이언트에서 Send를 5번 하는데

for (int i = 0; i < 5; i++)
{
    byte[] sendBuffer = Encoding.UTF8.GetBytes($"Hello World! {i} ");
    int sendByte = socket.Send(sendBuffer);
}

 

강의 결과 화면처럼 서버에서는 5번의 Send 패킷을 모았다가 출력하는 모습을 볼 수 있습니다.

 

[테스트2]

아래에서도 마찬가지로 Send를 5번 하는데,

1초 딜레이를 주고 실행했습니다.

for (int i = 0; i < 5; i++)
{
    byte[] sendBuffer = Encoding.UTF8.GetBytes($"{i} ");
    int sendByte = socket.Send(sendBuffer);
    Thread.Sleep(1000);
}

 

이때는 서버에서 패킷을 모을 시간이 없었던건지,

Send 패킷을 안모으고 출력하는 모습을 볼 수 있습니다.

 

 

[질문]

서버에서 패킷을 모으는 역할을 하는 것이 무엇인가요?

SocketAsyncEventArgs 인가요?

그리고 패킷을 모으는 기준이 무엇인지 궁금합니다.

시간인가요? 아니면 끊임 없이 연속적으로 보내지는 패킷인가요? 아니면 다른 무엇인가요?

SocketAsyncEventArgs recvArgs = new SocketAsyncEventArgs();
recvArgs.Completed += new EventHandler<SocketAsyncEventArgs>(OnRecvCompleted);
recvArgs.SetBuffer(new byte[1024], 0, 1024);

C# unity 네트워크

답변 1

0

Rookiss

음~ 이 부분은 강의를 다 완강하신 다음에 질문을 올리시는 쪽이 수월합니다.
정확히 어느 부분에서 질문을 하신 것인지 애매하기 때문인데요.

TCP는 특성상 패킷의 경계가 없어 빠르게 여러 패킷을 보내면,
받는 쪽에서는 뭉쳐서 올 수 있습니다.
하지만 그와는 별개로 실제 게임에서 패킷을 모아 보내는 경우도 있는데 (보내는 쪽에서)
네트워크 헤더를 많이 붙이지 않고 보내면 성능이 좋아지기 때문입니다.

패킷을 모으는 기준은 다양하게 있을 수 있습니다.
보통은 같은 공간 내에 있어서 모두가 동일하게 그 패킷을 받아야 할 경우,
그리고 그 패킷이 다량일 경우 (ex. 이동, 전투 등) 모아서 보내는 경우가 있긴 합니다.

0

asoft82

답변이 되었습니다. TCP 부분을 포함하여 완강하면 의문점이 해소 될 것 같습니다.

TLS 질문드립니다.

0

51

2

SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.

0

54

2

Unity Span

0

80

2

XML, Dll 차이점

0

109

2

Session 질문입니다

0

81

1

Write Read 커서 키워드

0

77

1

더미 클라이언트 수에 따른 OnDisconnect 발생

0

73

2

네트워크 Send 전담 스레드 배치

0

99

2

UnhandledException 으로 서버 터지는 경우

0

88

2

컨텐츠 단, 엔진 단

0

106

1

질문 있습니다

0

77

2

C# 게임서버 3D MMORPG

0

150

2

유니티6 버전

0

99

2

receive하는 부분과 send하는 부분의 차이

0

134

2

커서의 위치의 중요성

0

104

2

C++ 전혀 모르는데 C# 서버

0

170

2

강의에 질문이 있습니다

0

86

2

멀티스레드 이해도 질문

0

96

1

500 vs 500

0

130

3

OnAcceptHandler 액션 함수

0

64

1

이 정도 서버의 객관적인 수준이 궁금합니다.

0

193

2

36. Serialization #3 에서 string (name) 코드 수정 질문

0

83

2

외부 컴퓨터와의 통신 방법이 궁금합니다

0

107

1

스핀락 질문.

0

110

2