inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

SendBuffer 새로 sendbuffer 할당해주는 문제

미해결

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

public static ArraySegment<byte> Open(int reserveSize) { if (CurrentBuffer.Value == null) { CurrentBuffer.Value = new SendBuffer(ChunkSize); } if (CurrentBuffer.Value.FreeSize < reserveSize) { CurrentBuffer.Value = new SendBuffer(ChunkSize); } return CurrentBuffer.Value.Open(reserveSize); } Sendbuffer에서 남은버퍼를 반환해주는 open함수에서 필요한 사이즈가 현재 남아있는 free사이즈보다 큰 경우(CurrentBuffer.Value.FreeSize < reserveSize) 새로 sendbuffer를 CurrentBuffer.Value에 넣는데, 아직 CurrentBuffer.Value 에 보내지 못한 데이터가 있는 경우에 open을 해버리면 새 sendbuffer가 CurrentBuffer.Value로 치환되어버려서 데이터가 날라가버리는 것 아닌가요? 즉, 예를들어 아직 100명한테 다 안보냈는데 새로 할당해버리면 안되지않나요? _usedSize를 recvbuffer에서처럼 땡겨서 쓰지 않는 이유가 누군가가 계속 이전에 있던 부분(현재 사용 중인 부분)을 참조하고 있을 수도 있기 때문에 그냥 증가시키는 방법으로 한 것 처럼.. CurrentBuffer.Value 도 저렇게 그냥 새로 할당해버리면 안될 것 같다고 생각이 계속 듭니다 ㅜㅜ

  • C#
  • unity
  • 네트워크
jiw720 댓글 2 좋아요 0 조회수 516

공부방법에 대해서 질문드립니다

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

공부방법을 어떻게 하면 좋을까요? 강의를 듣고 스스로 코드를 구현해보는 방식으로 하면 될까요??

  • 네트워크
  • MMORPG
  • windows-server
황보민 댓글 1 좋아요 0 조회수 451

[요청]실전문제풀이 + 해설 PDF

미해결

AWS Certified Solutions Architect - Associate 자격증 준비하기

안녕하세요. 강사님, 실전문제풀이에 파란색 해설 추가된 PDF 파일 저도 받을 수 있나요? 미리 감사드립니다...

  • 네트워크
  • aws
73namu 댓글 2 좋아요 0 조회수 388

컴파일러 최적화 강의 관련 질문

해결됨

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

안녕하십니까 선생님 귀한 강의 항상 감사한 마음으로 듣고 있습니다. 아래 질문과 관련해 릴리즈 모드로 해서 실행을 하면 먹통이 되어야 하는데, 저는 먹통이 안 되고 "종료성공"까지 다 나옵니다. 혹시 이유를 알 수 있을까요? 참고로 아래 질문의 증상과 저도 동일하게 나타났고 닷넷 프레임워크로 프로젝트를 만들었습니다. 혹시나 해서 닷넷코어로 프로젝트를 만들어서 해보면 수업처럼 먹통이 되긴 하는데, 닷넷프레임워크로 프로젝트 만들면 릴리즈로 실행 시 먹통이 안 되고 잘 실행이 됩니다. 감사합니다~! --아래 질문---------------- 안녕하세요, 선생님 c# 게임 서버 강의를 수강하다가 선생님과 다르게 작동하는 부분이 있어서 질문드립니다 6번째 강의인 컴파일러 최적화 강의에서 코드를 실행하면 4:25초경에 쓰레드 시작! 쓰레드 종료! Stop 호출 종료 대기중 종료 성공 이 순서대로 선생님은 실행이 되는데요, 저는 쓰레드 시작! Stop 호출 종료 대기중 쓰레드 종료! 종료 성공 순서로 쓰레드 종료!가 더 늦게 뜨네요 강의에서처럼 _stop에 volatile을 붙이면 선생님이랑 같은 값이 나오긴 하는데 컴퓨터 성능 차이 때문일 수 있나요? 코드가 다른 부분은 없습니다. 몇 번이고 확인했어요 감사합니다!

  • C#
  • unity
  • 네트워크
권경환 댓글 1 좋아요 1 조회수 579

강의 업데이트 항목 문의

미해결

AWS Certified Solutions Architect - Associate 자격증 준비하기

강사님 안녕하세요. '마지막 업데이트일 : 2023년 03월 05일'로 확인되는데 어떤 부분이 업데이트가 된건가요?? 혹시 실전문제풀이 자료도 변동이 있을까요??

  • 네트워크
  • aws
sling 댓글 1 좋아요 0 조회수 1702

실전문제풀이 pdf문의

미해결

AWS Certified Solutions Architect - Associate 자격증 준비하기

안녕하세요 강사님 강의 잘 듣고 있습니다! 문제풀이 pdf 중 아래 해설도 적혀있는 pdf 받아볼 수 있는지 문의 드립니다. 감사합니다.

  • 네트워크
  • aws
infulon 댓글 2 좋아요 0 조회수 437

궁금해져서 질문드립니다

미해결

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

C_Chat chatPakcet = packet as C_Chat 여기에서 as로 형 변환을 하는것과 안하는 것의 차이점을 알고 싶습니다

  • C#
  • unity
  • 네트워크
박건원 댓글 1 좋아요 0 조회수 407

Router 와 Gateway 차이 질문입니다

해결됨

외워서 끝내는 네트워크 핵심이론 - 기초

안녕하세요 강의를 보다 문득 게이트웨이와 라우터의 차이가 더 궁금해서 글을 작성합니다. 제가 구글에서 찾은 정보에 의하면 라우터 는 주로 LAN과 WAN을 연결(layer3)하는데 많이 사용되며, 게이트웨이 는 프로토콜이 다른 네트워크를 연결(layer4)할 때 주로 사용합니다 라고 하는데 게이트 웨이는 오직 layer에서만 쓸 수 있는지, 둘이 같은 개념인지 궁금합니다! 그리고 이 둘에 대한 널널한 개발자님의 견해가 더 궁금해요. 감사합니다.

  • 네트워크
Nine 댓글 1 좋아요 0 조회수 2882

queue의 데이터 이외의 공간?

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

MemoryPool에서 queue나 vector을 사용하면 데이터 뿐만 아니라, 데이터를 담아두기 위한 공간 이 별도로 할당된다고 하셨습니다. 이 별도의 공간이 무엇인지 잘 모르겠습니다.

  • 네트워크
  • MMORPG
  • windows-server
akrhwkwk 댓글 1 좋아요 0 조회수 408

SendBuffer 마지막부분 이해가 안됩니다.

미해결

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

질문 1. TLS로 SendBuffer를 스레드별 전역변수로 지정했으면, SendBuffer 멤버필드인 buffer도 스레드별 전역변수가 아닌가요? 그런데 왜 _buffer는 공유자원처럼 다수의 스레드가 참조하는 건가요?(28:39 부분) 질문 2. 만약 _buffer는 TLS 여도 다수의 스레드가 볼 수 있다고 쳐도, 어차피 Send하는 부분은 그 스레드가 넣은 부분만(handler에서 close로 보내준 segment영역) 보내주기때문에 상관없는 것 아닌가요? (하지만 애초에 질문 1이 이해가 안됩니다.) 질문 3. 이전에 Session#2 강의 시작부분에 설명해주신 내용에서, SEssion의 receive는 OnRecvCompleted()메서드에 여러 스레드가 동시다발적으로 들어가는 경우는 없다. 라고 하셨는데, 해당 강의에서는 어떤 이유로 멀티스레드를 생각해야 하는 상황이 된건지 궁금합니다. 질문 4. Session 객체는 connect되는 client당 하나씩이니까 client와 연결 될 때 마다 새로운 session객체가 생성되어 다 따로 만들어지는 것이기 때문에 애초에 _sendQueue도 스레드별로 따로 아닌가요? 질문 5. _buffer는에서 읽기만 하는거니까..(30:03) 라고 하셨는데 읽는 부분이 어느부분인지, deq하는것을 읽는것이라고 표현하신건가요? 어떤 경우들을 말슴하시는건지 이해가 안되어 헷갈리는게 많습니다. 일단 질문은 더 있지만, 대표적인 질문들로 올려봅니다

  • C#
  • unity
  • 네트워크
jiw720 댓글 2 좋아요 0 조회수 593

sleep_for과 yield 차이 질문드립니다.

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

안녕하세요! 멀테스레딩 강의(Lock 구현 부분) 수강 중에 제가 제대로 이해가 안 가는 부분이 있어서 질문드립니다. 구체적으로 강의 코드에서 sleep_for와 yield의 내부적 동작?을 저는 yield(): lock이 잠겨있는 경우, system time slice에 상관없이 바로 context switching이 발생해, 해당 스레드가 다시 운영체제 스케줄링 큐에 들어가 운영체제가 다시 실행시켜 줄 때까지 대기 sleep_for(n): lock이 잠겨있는 경우, yield와 마찬가지로 컨텍스트 스위칭이 바로 발생하는데, n시간동안 해당 스레드가 sleep thread 큐에 저장되어 있다가, 그 다음에 스케줄링큐로 들어가서 이후에 다시 실행될때까지 대기 이해했는데, 이게 제대로 이해한게 맞을까요? 특히 sleep_for의 동작이 이해가 잘 안가는데, 스택오버플로우에서는 https://stackoverflow.com/questions/17325888/c11-thread-waiting-behaviour-stdthis-threadyield-vs-stdthis-thread sleep_for(n)의 경우 최소 n시간 이상을 block한다는데, 해당 스레드가 블록되었다는 말이 컨텍스트 스위칭이 되어있다는걸까요? 또 sleep thread queue는 운영체제에서 관리하는 개념일까요? (제대로 이해를 못해서 질문이 두서 없는 점 죄송합니다....)

  • 네트워크
  • MMORPG
  • windows-server
Grid 댓글 1 좋아요 0 조회수 913

segmeng 범위 지정시에 질문

미해결

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

안녕하세요, RecvBuffer 강의중에서 //읽을 수 있는 유효한 데이터의 범위 public ArraySegment<byte> ReadSegment { get { return new ArraySegment<byte>(_buffer.Array, _buffer.Offset + _readPos, DataSize);} } //사용가능한, 비어있는 범위 public ArraySegment<byte> WriteSegment { get { return new ArraySegment<byte>(_buffer.Array, _buffer.Offset + _writePos, FreeSize); } } 위와 같이 segment 프로퍼티를 설정하였는데, 중간 인자로 그냥 readPos를 넣지 않고 buffer.Offset + readPos 로 계산한 이유를 모르겠습니다. 현재 저의 생각으로는 buffer.Offset은 결국 언제나 0이지 않나? 입니다. 코드를 보았을 때 offset을 조작하거나 건드리는 코드는 아직 현재강의(RecvBuffer)까지는 없고, 나중에라도 _readPos와 DataSize가 결국 segment범위를 바꿔주니 이 offset을 건들일 필요는 없다고 생각이 드는 상태입니다. 또한, 만약 offset을 변경시키는 경우가 있더라도 offset+readpos 하면 offset이 0이 아닌경우 readpos에 맞지않는곳이 시작위치가 될텐데 왜 offset을 더하는건지 이해가 되지 않습니다. 따라서 offset을 더한 이유가 궁금합니다!

  • C#
  • unity
  • 네트워크
jiw720 댓글 3 좋아요 0 조회수 557

RecvBuffer clean함수 이렇게 작성하면 어떻게 되나요?

미해결

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

안녕하세요, RecvBuffer 클래스를 작성하는 강의에서, clean()함수를 작성하실 때 강사님께서는 이렇게 작성하셨는데, 혹시 아래와 같이 Array.Copy(ReadSegment.Array, 0, _buffer.Array, 0, DataSize); 이렇게 작성해도 똑같은 결과가 나오려나요? 혹은 나중에 다른상황에서 이렇게 작성하면 다르게 동작한다던지 그런 문제가 있을까요? 위에 적용된 ReadSegment범위를 사용하지 않는 이유가 뭔지 궁금합니다. public void Clean() { int dataSize = DataSize; if (dataSize == 0) { _readPos = 0; _writePos = 0; } else { Array.Copy(ReadSegment.Array, 0, _buffer.Array, 0, DataSize); _readPos = 0; _writePos = dataSize; } }

  • C#
  • unity
  • 네트워크
jiw720 댓글 1 좋아요 0 조회수 342

RegisterRecv()에서 args초기화 구문 사라진 이유

미해결

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

안녕하세요, 현재 RecvBuffer 강의를 시청중입니다. 강의를 듣다가 RegisterRecv 를 봤는데 강사님께서 void RegisterRecv(SocketAsyncEventArgs args) { args.AcceptSocket = null; bool pending = _socket.ReceiveAsync(args); //바로 성공했으면 if(pending == false) { OnRecvCompleted(null, args); } } 위와 같이 원래 있었는데 void RegisterRecv(SocketAsyncEventArgs args) { bool pending = _socket.ReceiveAsync(args); //바로 성공했으면 if(pending == false) { OnRecvCompleted(null, args); } } 위처럼 args.AcceptSocket = null; 를 언제인지는 모르겠지만 삭제를 하셨던거같은데, 언제, 왜 삭제하신건지 이유가 궁금합니다.

  • C#
  • unity
  • 네트워크
jiw720 댓글 3 좋아요 0 조회수 520

메모리 릭이 쌓이고 있는지에 대한 체크

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

안녕하세요 선생님 유니티 클라, C++ 서버로 탑뷰 슈팅게임을 만들고있습니다. C++서버가 종료됐을때 메모리 릭이 남는것이 아닌 프로그램이 가동중에 유저, 총알등이 삭제되고 생성되면서 계속해서 릭이 쌓이고있는지 확인하고 싶은데 방법이 있을까요? 선생님이 알려주신 메모리기법들은 적용하지 않았습니다. (알려주신것들을 최대한 공부하고 이해는 했기 때문에 어떻게든 써먹을수있겠지만 적용하지 않은 이유는 제가 감당할수없기 때문입니다. 문제가 생겨 필요한 상황이 나왔을때 그때 구현해볼 생각입니다. 사용하는 부분들도 있습니다. 버퍼관리라던지...)

  • 네트워크
  • MMORPG
  • windows-server
먹물크림빵 댓글 1 좋아요 0 조회수 542

안녕하세요 질문좀 드릴께요

미해결

풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]

제가 서버는 완전 지식이 없는 기초인데요 해당 강의를 구매하였구 공부 예정이예요 혹시 해당강의에 클라우드에 리눅스 서버 구축 방법등 강의가 포함되어있나요?!

  • 네트워크
  • linux
  • docker
나만죽을순없지 댓글 1 좋아요 0 조회수 374

listener, connector static 차이 이유

미해결

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

안녕하세요, connector와 listener변수에서 static 차이가 일어나는 이유에 대해 질문드리고자 합니다. server 코드의 listener는 아래와 같이 static으로 정의하셨는데, (그리고 저 _obj는 왜 있는건지, 그냥 지워도 되는걸까요?) static object _obj = new object(); static Listener _listener = new Listener(); client코드의 connector는 그냥 static없이 Connector connector = new Connector(); 이렇게 그냥 변수로 지정하신 이유가 궁금합니다.

  • C#
  • unity
  • 네트워크
jiw720 댓글 2 좋아요 0 조회수 502

NL-SAS 와 SAS 의 차이점

해결됨

초보자를 위한 IT 인프라의 이해

이 둘의 차이점이 정확히 뭘까요?? ㅠㅠ 궁금합니다 가격은 nl-sas가 더 싼거 같긴한데...

  • 네트워크
  • 컴퓨터-구조
janjun7214 댓글 1 좋아요 0 조회수 6868

API의 정의 질문

해결됨

CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조

큰돌님, 안녕하세요. 강의 잘 듣고있습니다! 학습 중에 궁금증이 있어서 질문 올립니다. API를 뭐라고 정의해야 될까요??? 큰돌님 강의 교안 19페이지에서는 API를 '둘 이상의 컴퓨터 프로그램이 서로 통신하는 방법이자 컴퓨터 사이에 있는 중계 계층의 의미'라고 적어주셨는데요, 강의 교안 185페이지 REST API 파트에서는 API를 '소프트웨어와 소프트웨어 사이에서 데이터 전송을 가능하게 하는 프로그램'이라고 적어주셨습니다. 그 외에도, 인터넷으로 API의 정의에 대해 찾아보면 '소프트웨어 간의 통신 규약'이라고 나오는 등 정의가 애매모호한 것 같습니다. 기술면접에서 API에 대해서 질문이 들어올 경우, 어떻게 답하는게 가장 깔끔할까요?? 아니면, 어떻게 답해도 상관이 없을까요???

  • 면접
  • 기술면접
  • 네트워크
  • api
떠돌이공대생 댓글 1 좋아요 0 조회수 571

REST API의 URI규칙에 대해서 질문드립니다

해결됨

CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조

안녕하세요, 네트워크 파트의 REST API 강의 내용 수강 중 문의점이 생겨서 질문드립니다. 설명해주신 내용 중에 'Uniform-Interface의 6개의 규칙'과 'URI 규칙 6가지'간의 관계가 어떻게 되는지 잘 이해가 안 되는데요, 6개의 Uniform-Interface 규칙을 지켜서 URI를 만들었을 때의 'URI 생성 규칙'이 교안 187페이지에 나와있는 6가지 규칙이라는 게 맞을까요???

  • 면접
  • 기술면접
  • 네트워크
  • restapi
떠돌이공대생 댓글 1 좋아요 0 조회수 573

인기 태그

인프런 TOP Writers

주간 인기글