묻고 답해요
137만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
send 함수 질문이 있습니다
send를 사용할 때 블로킹 모드는 모든 데이터를 다 보내고 논블로킹은 일부만 보낼 수가 있다고 하셨는데 이 보낸다는 게 send를 사용한 사용자 커널에 있는 송신 버퍼에 보낸다는 건가요? 아니면 받는 사용자 커널에 있는 수신 버퍼에 보낸다는 건가요?그리고 논블로킹 모드에서 데이터를 일부만 보낼 수가 있으면 UDP에서는 데이터 경계의 대한 개념이 있으니까 논블로킹을 사용할 수 없는 건가요?
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
함수 포인터, 함수 객체에 대한 질문입니다!
공부하다가 생긴 궁금증입니다. 함수 객체가 함수 포인터의 모든 기능을 대체할 수 있나요?함수 포인터를 매개변수로 받아주는 라이브러리를 사용하는 것을 제외하고c++에서 함수 객체 말고 함수 포인터를 사용해야만 하는 경우가 있나요?함수 객체의 기능이 매우 뛰어난데, std::functional을 이용해서 callable 을 따로 관리하는 기능이 있는 이유는 무엇이고 이점은 무엇인가요? 가장 궁금한 것은 std::functional 을 사용하는 이유입니다!
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
다음으로 에 나오는 자료는 어디서 다운받나요?
소개에 나오는 자료는 강의자료밖에 안보이고다음으로 영상에서 사용하시는 자료는 어디서 받을 수 있는지 궁금합니다
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Completed가 자동 콜백 해줄텐데 왜 직접적으로 또 호출하나요?
public void Init(IPEndPoint endPoint, Action<Socket> OnAcceptHandler){_acceptHandler += OnAcceptHandler;_listenSocket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);_listenSocket.Bind(endPoint);_listenSocket.Listen(10);SocketAsyncEventArgs e = new SocketAsyncEventArgs();e.Completed += new EventHandler<SocketAsyncEventArgs>(OnAcceptCompleted);RegisterAccept(e);}void RegisterAccept(SocketAsyncEventArgs e){e.AcceptSocket = null;bool pending = _listenSocket.AcceptAsync(e);if (pending == false)OnAcceptCompleted(null, e);} 이 코드에서 RegisterAccept안에 pending이 false일 때 OnAcceptCompleted를 호출하는 코드를 보여주셨는데 이미 SocketAsyncEventArgs.Completed에 콜백 함수 넣어줘서 자동 처리 되는거 아닌가요?? 실제로 저렇게 함수를 재호출해주는 코드를 빼봐도 정상 작동되는것 같았습니다. 이중으로 함수 호출하시는 이유가 뭔지 궁금합니다!
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
Query parameter와 Path parameter의 적절한 사용 방법이 궁금합니다
/members?q=100 가 나은건지/members/100 이 나은건지 각각의 적절한 사용 방법이 궁금합니다
-
해결됨이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
레벨 재시작이 아닌 리스폰을 한다고 했을 때
캐릭터에 붙어있던 플레이어 컨트롤러나 AI 컨트롤러는 캐릭터가 삭제되고 리스폰 됐을 때, 자동으로 다시 같은 인스턴스가 붙나요???플레이어 스테이트도 캐릭터마다 하나씩 붙어있는 걸로 알고 있는데요. 이것 역시 그대로 사용하나요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
비트 마스크를 사용하는 이유가 무엇인가요?
안녕하세요.강의 정말 잘 듣고 있습니다.처음에는 단순 게임 서버를 구현하는 강의라고 생각했는데, 이론으로만 보던 CS, 네트워크 지식을 직접 구현해보면서 하니 기본기 다지는데 정말 도움이 되네요.그리고 꽤나 자바와 같은 모던 언어를 사용하다보니 깊게 생각하지 않던 부분도 고민할 수 있는 최고의 강의인것 같습니다. 질문으로 돌아가서비트 마스크를 사용하는 이유가 C# 에서 원자적 연산을 제공하는 Interlocked 클래스 함수의 파라미터 때문인가요?처음에는 writer, reader를 체크할 수 있는 클래스 변수를 따로 만들면 되지 않을까? 라고 생각했는데 그렇게 되면 if, if 이런 조건문이 계속 들어가서 원자적 연산이 어려워 져서 그런가요?(별도로 락이나 모니터로 잡을 수 있지만 가독성 측면에서도 그렇고, Interlocked가 표준화 되어 있기 때문에 저렇게 사용하나? 추측합니다.)몇개의 질문을 살펴보니 비트마스크와 Interlocked의 CompareExchange의 조합이 강력하네요. 지금 강의는 언어 레벨에서 지원하는 읽기 쓰기 락 동작 원리를 보여주신 것인데 실제 프로덕션 코드에서 사용하려면 락 타임아웃 같은것도 구현해야하나요?생각해보면 어떠한 경우에 읽기 락이 많이 쌓이고 해제하지 못한 경우일 때 쓰기락에 대기시간이 길어지니 일정 시간 후 락 해소를 시켜줘야 하나 궁금하네요.
-
해결됨외워서 끝내는 네트워크 핵심이론 - 응용
DNS에 대해 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 예전에 DHCP를 공부하면서 각 네트워크마다 ISP별로 DNS를 관리하고 있고 Host는 DHCP를 통해 해당 DNS의 IP위치를 알게된다고 이해했습니다.그럼 GSLB를 하려는 업체는 각 ISP업체마다 DNS에 도메인을 올려달라고 요청을 해야하는건가요? 또한 가비아같은 도메인 업체들은 그런 작업을 대리해주는 역할을 하는 건가요?DNS에 찾아보니 꼭 ISP뿐만 아니라 기업이나 개인 또한 DNS서버를 만들 수 있다는데 그럼 DHCP를 통해 DNS서버의 위치는 설정할 수 없어 다른 사람들은 사용 못하는 것 아닌지 궁금합니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
왜 SendBuffer 를 Session 이 가지면 성능에 문제가 되나요?
1명의 움직임을 100명에게 패킷으로 보내려면 Session 이 가진 버퍼를 100명에게 보내면 될 것 같아서...왜 위 경우에 하나만 만들어서 100명에게 보낼 수 없는지 궁금합니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
SetConsoleTextAttribute 함수 특수문자 겹침 현상..
위와 같은 현상이 왜일어나는지 아시나요?같은 색으로 하면 괜찮습니다..색은 변경할때 반칸씩 밀려 겹쳐 보이네요..간단한 코딩 아래첨부합니다..#include <iostream>int main(){ int temp = 0; for (int y = 0; y < 25; y++) { for (int x = 0; x < 25; x++) { temp++; //단일색 안밀림.. //SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 1); //색변경시 밀림.. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), temp % 3 == 0 ? 1 : 2); cout << "■"; } cout << endl; }} 환경은 윈도우 11입니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요 재귀허용 WriteUnlock() 질문드립니다!
public void WriteUnlock(){int lockCount = --_writeCount;if (lockCount == 0)Interlocked.Exchange(ref _flag, EMPTY_FLAG);}위의 코드에서 lockCount 지역변수를 만들어주신 이유가 따로 있으신지 궁금합니다! writeCount는 어차피 WriteLock을 잡은 애만 쓰는 변수라고 이해했는데, 그러면 writeCount-=1; if(writeCount==0) 이렇게 써도 괜찮지 않을까라는 생각이 들었습니다!너무 사소한 질문인 것 같은데, 열심히 듣다가 궁금해져서 질문드립니다ㅠㅠ
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
아래 질문 확인 한번 부탁드립니다!
루키스님 안녕하세요? 지난 질문 답변을 아직 못받아서 재질문 드리게 되었습니다. 인프런 AI가 답변을 남겨서 일까요?아님 제 질문에 실수가 있었을까요?후자의 경우라면 좀 더 신경쓸 수 있도록 하겠습니다 https://www.inflearn.com/questions/1126711/%EC%9E%A1%ED%81%901-2%EB%A5%BC-%EB%93%A4%EC%9C%BC%EB%A9%B0-%EC%A7%88%EB%AC%B8%EC%9D%B4-%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4-push-%ED%81%90%EB%A1%9C%EC%A7%81-send-%EC%9D%98-%EC%8B%9C%EA%B0%84%EB%B3%B5%EC%9E%A1%EB%8F%84-%EA%B4%80%EB%A0%A8
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
LEndTickCount를 중복검사 하는 이유가 궁금합니다.
요즘에도 답 달아주시는지 궁금하네요.ㅎㅎDoGlobalQueueWork()랑 JobQueue::Execute()에서 LEndTickCount를 검사하는데 굳이 DoGlobalQueueWork()에서도 검사해야 할 특별한 이유가 있을까요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
lock과 비동기화
SendAsync를 상위 참조에서 lock을 사용하여 관리하고 있습니다. 이러한 상황은 일반 Send를 사용하는 상황과 마찬가지로 비동기화의 강점을 이용하지 못하는 상황아닌가요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
callback 함수 사용에 있어 궁금증
bool pending = _listenSocket.AcceptAsync(args); if (pending == false) OnAcceptCompleted(null,args);해당 코드는_listenSocket.AcceptAsync(args);에서 이미 call back 함수를 사용하여 해당 비동기 작업이 실행될 때 까지 기다린 다음 위에서 정의해준 call back 함수인 OnAcceptCompleted를 호출하는 것으로 이해하고 있습니다.그런데 굳이 return을 bool형인 peding으로 받아 보류인지 아닌지 확인하여 바로 peding이 false이면 직접적으로 OnAcceptCompleted 함수를 호출할 필요가 있는가 하는 의문이 들었습니다.이는 멀티 쓰레드 상황을 대비한 사항인가요?보류를 확인하여 바로 통과 하였다면 직접적으로 함수를 호출하는것은 속도 측면의 이유에서 추가하는 것인가요?그렇지 않다면 굳이if(pending == false) OnAcceptCompleted(null, args);부문을 해당 코드에서 삭제해도 무관하지 않을까 하는 궁금증이 생깁니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
3way handshaking 시점의 패킷들의 정보
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 너무 잘 듣고 있는데 궁금한 부분이 생겼어요..실제로 소켓 라이브러리를 통해서 TCP/IP에서 가상연결 ?의 느낌으로 3Way HandShaking이 일어난다고 말씀 하셨는데그렇다면 1. 구글 서버와 연결 하기 위해서 실제로 TCP/IP 계층의 패킷들이 만들어져야 하는데 거기서 세그먼트는 전송데이터(HTTP 메세지)는 빠지고 출발지, 목적지의 IP,PORT 들만 가지고 만들어져서 아래계층으로 헤더들을 추가해서서버랑 connetion 이 되는건가요 ?좀 더 부가적으로 설명하자면 전송데이터(HTTP 메세지)만 빠진 데이터들이 예를 들어 다시 밑으로 전송계층 -> 인터넷계층 -> 네트워크 계층으로 하나씩 감싸져서 상대 서버에 도착 후 3Way HandShaking 이후 connetion 이후 다시 소켓이나 혹은 애플리케이션 계층으로 돌아 전송데이터(HTTP 메세지)를 가지고 다시 차례대로 계층으로 헤더들이 다시 추가되어서 실제 데이터가 전송되는 지 너무 궁금해요.. (전 먼저 Connetion을 위해 HTTP메세지 없이 캡슐화 해서 보내고, Connetion 이후 다시 역캡슐화로 윗 계층가서 헤더 추가하고 다시 캡슐화 하고 보내는 걸로 이해했어요)그렇다면 가상연결의 느낌이랑 다른 거 같아서.. 가상연결은 TCP/IP에서 소켓 라이브러리를 통해 바로 연결되는 느낌인데 이론상 물리계층으로 데이터가 전달될텐데 이게 가능할 거 같진 않아서 헷갈려요 ㅠㅠ
-
해결됨외워서 끝내는 네트워크 핵심이론 - 응용
iptables와 routing table의 차이
안녕하세요 널널님, 강의 잘 듣고 있습니다.다름이 아니라 routing table과 iptable의 차이에 대해 의문이 생겨 질문을 남깁니다.둘 다 패킷을 수정하여 ip:port 를 변경시켜주는, 일종의 nat를 수행하는 것 같은데 둘의 차이는 무엇인가요..?NAT table은 NAT 장치에 있는 routing table을 의미하는 것인가요?
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
안녕하세요 수강기간 연장 부탁드리겠습니다.
안녕하세요업무가 늘어서 강의를 수강하기 어려워졌습니다..강의 연장을 부탁드려도 될까요?
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
섹션 3. 포인터와 배열 (3주차) 배열 실습까지 진행했는데요
저는 코드를 똑같이 따라 했다고 생각했는데 오류가 납니다.파일 올려주신다고 했는데 어디서 다운 받을 수 있나요? https://youtu.be/7Tk8ocwMO7Q
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
반년넘게 C#해도 이해라는게 도저히 안갔는데
C++하니까스택이고 힙이고 참조고 이해가 됩니다진짜 왜 C#을 먼저했을까요? 감사합니다