묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
segmeng 범위 지정시에 질문
안녕하세요, 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#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
RecvBuffer clean함수 이렇게 작성하면 어떻게 되나요?
안녕하세요, 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#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
RegisterRecv()에서 args초기화 구문 사라진 이유
안녕하세요, 현재 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++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
메모리 릭이 쌓이고 있는지에 대한 체크
안녕하세요 선생님유니티 클라, C++ 서버로 탑뷰 슈팅게임을 만들고있습니다.C++서버가 종료됐을때 메모리 릭이 남는것이 아닌 프로그램이 가동중에 유저, 총알등이 삭제되고 생성되면서 계속해서 릭이 쌓이고있는지 확인하고 싶은데 방법이 있을까요?선생님이 알려주신 메모리기법들은 적용하지 않았습니다.(알려주신것들을 최대한 공부하고 이해는 했기 때문에 어떻게든 써먹을수있겠지만 적용하지 않은 이유는 제가 감당할수없기 때문입니다. 문제가 생겨 필요한 상황이 나왔을때 그때 구현해볼 생각입니다. 사용하는 부분들도 있습니다. 버퍼관리라던지...)
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]
안녕하세요 질문좀 드릴께요
제가 서버는 완전 지식이 없는 기초인데요해당 강의를 구매하였구 공부 예정이예요혹시 해당강의에 클라우드에 리눅스 서버 구축 방법등 강의가 포함되어있나요?!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
listener, connector static 차이 이유
안녕하세요, connector와 listener변수에서 static 차이가 일어나는 이유에 대해 질문드리고자 합니다. server 코드의 listener는 아래와 같이 static으로 정의하셨는데, (그리고 저 _obj는 왜 있는건지, 그냥 지워도 되는걸까요?) static object _obj = new object(); static Listener _listener = new Listener(); client코드의 connector는 그냥 static없이 Connector connector = new Connector();이렇게 그냥 변수로 지정하신 이유가 궁금합니다.
-
해결됨초보자를 위한 IT 인프라의 이해
NL-SAS 와 SAS 의 차이점
이 둘의 차이점이 정확히 뭘까요?? ㅠㅠ 궁금합니다가격은 nl-sas가 더 싼거 같긴한데...
-
해결됨CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
API의 정의 질문
큰돌님, 안녕하세요. 강의 잘 듣고있습니다!학습 중에 궁금증이 있어서 질문 올립니다.API를 뭐라고 정의해야 될까요???큰돌님 강의 교안 19페이지에서는 API를 '둘 이상의 컴퓨터 프로그램이 서로 통신하는 방법이자 컴퓨터 사이에 있는 중계 계층의 의미'라고 적어주셨는데요,강의 교안 185페이지 REST API 파트에서는API를 '소프트웨어와 소프트웨어 사이에서 데이터 전송을 가능하게 하는 프로그램'이라고 적어주셨습니다.그 외에도, 인터넷으로 API의 정의에 대해 찾아보면 '소프트웨어 간의 통신 규약'이라고 나오는 등 정의가 애매모호한 것 같습니다.기술면접에서 API에 대해서 질문이 들어올 경우, 어떻게 답하는게 가장 깔끔할까요?? 아니면, 어떻게 답해도 상관이 없을까요???
-
해결됨CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
REST API의 URI규칙에 대해서 질문드립니다
안녕하세요, 네트워크 파트의 REST API 강의 내용 수강 중 문의점이 생겨서 질문드립니다.설명해주신 내용 중에 'Uniform-Interface의 6개의 규칙'과 'URI 규칙 6가지'간의 관계가 어떻게 되는지 잘 이해가 안 되는데요,6개의 Uniform-Interface 규칙을 지켜서 URI를 만들었을 때의 'URI 생성 규칙'이 교안 187페이지에 나와있는 6가지 규칙이라는 게 맞을까요???
-
해결됨CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
토큰기반 인증방식에 대해서 질문있습니다
안녕하세요, 토큰기반 인증방식에 대한 내용 학습을 하다가 질문이 생겨서 문의드립니다.교안이나 강의 내용을 보면, stateless를 유지하기 위해서, 기본 서버 이외에 인증 서버를 따로 두어야 하는 것으로 같은데 맞나요??그냥 하나의 서버에서 인증과 다른 요청 처리를 같이 하더라도, 서버에 인증정보가 관리되는 것이 아니고, 토큰에서 관리가 되기에 인증 서버를 따로 마련하지 않더라도 서버가 stateless하게 관리되는 것 같아서 문의드립니다
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
ArraySegment<byte>
public ArraySegment<byte> ReadSegment { get { return null; } } public ArraySegment<byte> WriteSegment { get { return null; } } 심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태오류 CS0037 'ArraySegment<byte>'은(는) null을 허용하지 않는 값 형식이므로 null을 이 형식으로 변환할 수 없습니다. ServerCore 저는 null을 넣을때 오류가 뜨는데 무슨 이유일까요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
Content-Encoding 질문입니다.
Content-Encoding는 표현 데이터를 압축하기 위해 사용한다 라는 것은 이걸 사용하면 표현 데이터를 직접 압축을 시켜준다는 의미인가요??그러면 Content-Encoding은 직접 압축을 해주기도하고 표현데이터가 어떤 압축방식인지 알려주기도 하는 2가지 용도로 사용되는건가요??답변주시면 정말 감사하겠습니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Lock-Based Queue 병목현상 질문 드립니다.
Lock-Based Queue를 제작하여 테스트를 할 때 waitPop을 사용할 경우 sleep을 지우고 디버깅을 해보면 Queue 사이즈가 무한정으로 늘어납니다. Push를 한 번 Pop을 2번 돌려도 마찬가지입니다. 실제 스레드에서 사용할 시에는 sleep을 사용하지 않고 while문으로 돌리게 될텐데, wait를 쓰면 이렇게 병목현상이 발생하는 걸까요? 이 현상을 해결할 방법은 없나요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
다른 도메인이 같은 포트를 사용하는 경우
다른 분들의 질문답변을 보다 헷갈려서 질문드립니다.어떤분 질문답변에서host: www.delivery.com IP와 포트 : 200.200.200.2:3000host:www.hungry.com IP와 포트 : 200.200.200.2:3000이와 같은 상황에서는 포트번호가 같아 작동하지 않는다. 포트번호는 응용 계층(즉, OS)에서 관리하는 가상의 개념인지라 같은 포트번호를 두개의 어플리케이션에서 공유할 순 없다. 라고 되어있는데 다른분 질문에서는aaa.com 의 포트번호 100번에 배달의 민족 주문 서비스(하나의 .jar파일 실행이라고 가정)bbb.com 의 포트번호 100번에 카카오 선물하기 서비스(IP는 200.200.200.2 로 동일하다)이런식으로 따로 연결이 되고 이 포트번호 100에는 또다른 프로그램(서비스)을 연결할 수 있다고 되어있습니다. 다른 도메인이 같은 포트를 사용할 수 있는 건지 궁금합니다. 답변주시면 정말 감사하겠습니다.
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
실전 문제 풀이 해설 파일 문의
안녕하세요.덕분에 강의 잘 듣고 있습니다. 다름이 아니라 실전문제 pdf외로 각 보기 별 해설이 작성된 파일도 내려받을 수 있을까요?실전문제풀이 강의를 보면 각 보기 별로 틀린 이유에 대해서 작성해 주시는데요. 이 부분도 반영된 파일을 받을 수 있는 지 문의 드립니다. 감사합니다.
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
TCP 연결 종료 과정 중 Time wait관련
서버로부터 FIN + ACK을 수신 후, 최종 ACK를 서버로 다시 전달한 다음, TIME_WAIT 상태로 넘어가고, 일정 시간이 지난 다음 Close 처리가 된다는 설명에서,TIME_WAIT 시간은 정해진 값이 있는 것인지? 아니면 소켓 프로그래밍 시 따로 정해주는 것인지?바로 CLOSED하지 않고, TIME_WAIT을 하는 이유(목적)는 무엇인지?질문의 드립니다. :) 널널한개발자님 답변 부탁 드립니다!!
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
표준 헤더와 임의 헤더
안녕하세요 좋은 강의 잘 듣고 있습니다. 표준 헤더라는 것은 브라우저가 자동으로 넣어주는 것인가요? 예를 들어 백앤드에서 만든 api의 response의 헤더에는 사실 java/spring 기준으로. 'return new ResponseEntity(response, HttpStatus.OK)' 만 내보내줌에도 불구하고, 개발에 배포한 후 브라우저에서 f12로 개발자 도구로 확인하면 제가 넣지 않은 여러 헤더들(Origin, Host 등 다양한 값) 이 들어있더라구요. 표준헤더의 기준(몇 가지는 꼭 브라우저가 넣어준다 등) 은 어떻게 정하는 걸까요? 브라우저마다 다른가요? 미리 감사드립니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
POST 등록 후 Location 헤더
안녕하세요좋은 강의 항상 잘 듣고 있습니다. 다름이 아니라, post에서 등록한 후 201, CREATE(또는 200, OK) response 에서 Location헤더 필더에 해당 리소스의 생성된 위치를 보여준다고 했는데요(ex /members/100) 꼭 실무적으로 그렇지 않고 개념, 이론적으로 그렇다는 것 맞을까요? 개발자가 직접 해당 소스의 위치 값을 response Header 의 Location 필드값에 넣어주는 것이요. 반드시 post api에서 자동적으로 내려주는 것은 아니라서 여쭤봅니다. 감사합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
환경설정 질문입니다
안녕하세요 선생님, 제가 새 프로젝트를 만들면서 이름과 위치를 정하고 다음으로 넘어갔더니 대상 프레임워크에 .NET Core 3.1 (지원하지 않음) 이라고 나옵니다.visualstudio installer에서 제가 보기에 c#에 관련된 것은 다 설치한 상태인데 더 설치해야 하는 것이 있는걸까요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
할당 범위? 오류? 질문 있습니다. 메모리 매니저 생성자 부분
강의영상 23;29초을 보면 두 번째 루프가 1024부터 시작함0~1024바이트까지는 32바이트 단위로 증가1025~2048바이트 까지는 128바이트 단위로 증가즉 1025바이트가 필요하면 1024+128바이트의 메모리 풀에서 메모리를 가져다 쓴다(메모리 매니저의 pools의 1025번지는 1024+128단위로 할당되는 메모리 풀을 가리킨다.)로 의도하셨다고 생각이 듭니다.하지만 size=1024로 대입하는 구문을 빼면size=1024+32 부터 시작합니다.따라서 사용자가 1025바이트가 필요로 하면메모리 매니저의 pools의 1025번지에는 1024+32바이트의 메모리풀에서 pop해서 사용할 것 같습니다.의도했던것에서 값이 밀렸기에 3번째 루프에서 size는 2080에서 시작하고2080 > 2336>2592 >...>3872 > 4128루프탈출그렇기에 3873~4096번지까지는 NULL이들어갑니다. 루프시작시에 1024, 2048부분이 들어가야 할 것 같습니다.