묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
DELETE, PUT, PATCH의 리다이렉션
안녕하세요.DELETE, PUT, PATCH의 리다이렉션은 본문과 메서드를 어떻게 유지하나요? GET과 POST와 동일하게 동작하나요?
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Client에서 WSAEventSelect 사용하고싶어서 작성했는데 문제가생겼어요
Client에서 WSAEventSelect 사용하고싶어서 작성했는데FD_WRITE Event가 한번발생 후 그뒤로 발생을 하지 않습니다주의사항대로라면 FD_WRITE발생시 send를 호출하지 않으면 두 번 다시 발생하지 않는다고 했는데 그건 아닌거같아 혹시 어디서 문제가 발생한건지 봐주실수있나요?? // Send while (true) { //연결된 Event중 동작 가능한 Event 탐색 //WSAWaitForMultipleEvents(저장된 이벤트수,이벤트배열 시작주소,이벤트 성공을 모두 기다릴지 여부,타임아웃,FALSE) int index = WSAWaitForMultipleEvents(vecWSAEvents.size(), &vecWSAEvents.front(), false, WSA_INFINITE, false); //작업오류상태 if (index == WSA_WAIT_FAILED) continue; //return 된 index에 WSA_WAIT_EVENT_0를 빼주면 실제 실행된 Event의 Index를 구할 수 있다. index -= WSA_WAIT_EVENT_0; //어떤 종류의 Event가 발생했는지 확인 WSANETWORKEVENTS NetworkEvents; Result = WSAEnumNetworkEvents(ClientSessions.m_Socket, vecWSAEvents[index], &NetworkEvents); if (Result == SOCKET_ERROR) continue; //Read Event 발생 if (NetworkEvents.lNetworkEvents & FD_WRITE) { //Error 체크 if (NetworkEvents.iErrorCode[FD_WRITE_BIT] != 0) continue; Result = send(ClientSessions.m_Socket, ClientSessions.m_strBuff, sizeof(ClientSessions.m_strBuff), 0); if (Result == SOCKET_ERROR && WSAGetLastError() != WSAEWOULDBLOCK) continue; std::cout << "Send Data ! Len = " << sizeof(ClientSessions.m_strBuff) << std::endl; std::this_thread::sleep_for(std::chrono::seconds(1)); } }
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
테스트 메모리 릭킹 관련 질문
아래와 같은 테스트를 진행했고 이는 강의코드에도 유사하게 발생할 것으로 보입니다. 서버 컨텐츠단에서 패킷 모아 보내기 기능까지 구현500개의 더미 클라이언트가 S_Chat 을 송신서버는 비주얼 스튜디오에서 디버그모드로 구동더미클라이언트는 exe모드로 실행과 종료를 반복 이때 클라이언트의 connect, disconnect가 잦아지면서 서버의 메모리 점유율이 내려가지 않는 현상이 궁금해서 그러는 것이지, 고쳐달라고 떼쓰는게 아닙니다. 이런 현상은 강의 코드에서도 발생할 것으로 보이는데요. 혹시 알고 계신 이유가있다면 그것만 말씀해주시면 됩니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
테스트 중 메모리 릭킹 현상 질문
테스트를 하다 릭킹(leaking) 현상이 생기는게 궁금해서 여쭙습니다.테스트 과정서버 컨텐츠단에서 0.15~0.25초 단위로 패킷을 모아보내는 기능까지 구현더미 클라이언트에서 500명이 C_Chat 패킷을 보내도록 구현서버만 Visual Studio의 디버그 모드로 실행 (메모리 진단을 위해)클라이언트는 빌드된 exe파일로 접속클라이언트만 반복적으로 종료하고 다시 실행이때 서버쪽 메모리 점유율이 올라가기만 합니다.Disconnect() 가 분명히 불리고 소캣을 Clean(), Shutdown()을 하는데 (심지어 Dispose()도 넣음 다 돌아가는거 확인)서버 메모리 점유율이 260메가 막 그러네요, 아무리 오래 두고 봐도 CG가 정리할 생각을 안해요 ㅠㅠ다 깔끔하게 정리할 욕심은 없습니다. 다만 릭킹은 안좋아보여서요.이거 이유가 있을까요? 참고로 리스너쪽 대기 큐 150 이상으로 설정해야 테스트가 잘됐습니다, (강의시 backlog 인자)
-
해결됨AWS Certified Solutions Architect - Associate 자격증 준비하기
실전문제 PDF 요청드립니다.
안녕하세요.해설본 pdf 요청드립니다.kangwk46@daum.net
-
해결됨20년 경력자의 알기쉬운 컴퓨터네트워크
무선네트워크 구성에 관한 질문
'무선 네트워크 기본 이론 및 무선 라우터 기본 설정' 강의를 듣고 따라하면서 토폴로지를 구성하면 무선 라우터 -> 라우터로는 패킷이 정상으로 가는 데, 라우터 -> 무선 라우터 방향으로는 패킷이 전송되지 않습니다. 이 부분에 대하여 확인 부탁드립니다.
-
해결됨외워서 끝내는 네트워크 핵심이론 - 응용
NAT 방식 관련 질문드립니다
안녕하세요 선생님 NAT 공부하다가 의문이 생겨 질문 남깁니다.Local host와 internet 사이에는 공유기라는 장비가 NAT 역할을 해주는데, Web server와 internet 사이에는 이런 역할을 하는 장비가 없을까요?Web server의 ip는 단지 public ip로 외부에 노출되어 있는건가요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
영구 리다이렉트 관련 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]본문의 내용도 알겠는데, 실제 현실에서는 사실 처음에 이벤트 페이지로 들어가는 GET 요청부터 구페이지면 신페이지로 바꿔주는 경우가 많은데, 이럴때도 301 메세지가 온다고 생각하면 될까요?
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]
도메인을 A, B 또는 그 이상으로 여러개 운영하려면 어떻게 해야 될까요?
도메인이 A,B,C 이런식으로 여러개의 독립된 사이트를 만들어 보려고 합니다.이럴때 docker compsose 안에 nginx:80 을 여러개 만들어야 되는건지아니면 docker compose를 여러개 만들어야 되는걸까요?기존 아파치에서는 virtual host에 여러개의 도메인을 셋팅하면 되었는데요도커에서는 어떻게 해야 될지 난감합니다. 구글 검색을 해봐도 이해가 잘 가는 내용이 많지가 않네요.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
HTTP 상태코드 202번과 100번대의 차이가 궁금합니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]둘 다 요청 접수 후 처리중 혹은 처리대기중인 상태인거 같은데 어떤 차이가 있는지 궁금합니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
POST 기반 등록 API 회원 관리 시스템의 id 와 실제 현실에서 회원가입시 id입력 시스템 차이 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 내용처럼 다른 부가정보를 클라이언트가 다 입력하고 등록했을 때, key 값이 되는 id를 서버가 알려주는 회원가입 시스템보다는 현실에는 id 부터 유저가 입력하는 경우가 많은데본 강의는 회원가입시스템은 보통 이렇다 라기보단 말그대로 POST 기반 등록 설계의 예시는 이런게 있다 를 보여주기 위한 것일까요?아니면 보통 유저가 id를 넣더라도 중복방지체크하는 부분이 있는데 이런 부분이 서버가 id를 알려주는거라고 봐야할까요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
PUT 기반 등록 API 설계시 리소스 경로 충돌케이스에 대해 질문 있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]본 강의에 나온 예시로는 클라이언트A 와 클라이언트B 가 서로 같은 이름이지만 내용은 다른 파일을 등록한다면 한쪽 데이터가 완전 날라갈텐데, 그런것은 고려안한 단순 예시일뿐인가요? 아니면 사실 /files 앞에 클라이언트A 만의 유니크한 URI 가 더 존재함을 가정한것일까요?혹은 본문의 클라이언트와 실제 사용 유저는 분리되고, 클라이언트에서 서로 다른 유저간 충돌방지를 위한 어떤 로직이 있다는 전제가 있는 것일까요?
-
해결됨비전공자의 전공자 따라잡기 - 네트워크, HTTP
안녕하세요. 궁금한게 있습니다.
안녕하세요. 궁금한게 있습니다.원 서버보다 리버스 프록시가 정적 파일 서빙해주는 역할이나 압축 같은 것을 더 잘한다 하셨는데 이때 각각 특화된 프록시를 사용하는 것인가요? 아니면 프록시에서 압축, 정적파일 서빙 등 모든 일을 다 하는데 원 서버보다 더 빠른것인지 궁금합니다.또한 API Gateway도 Proxy라 하셨는데 관련 내용을 못찾고 있어서요ㅠㅠ 혹시 어떻게 검색하면 관련 문서를 볼수 있을지도 궁금합니다.항상 감사합니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
섹션2에서 TextRPG 질문있습니다!
아래의 코드처럼main안에서 EnterLobby()를 호출하고그 밑에도 EnterLobby() 함수 내용이 작성되어있는데메인 상단에 void EnterLobby(); 를 또 해주는 이유는int num;int main(){ num = 10;}이런식으로 작성할때처럼 EnterLobby() 함수 공간을 미리 할당해주기 위해서 하는게 맞을까요?!void EnterLobby(); int main() { while (true) { //입력 //로직 //출력 } EnterLobby(); } void EnterLobby() { while (true) { cout << "-------------------------" << endl; cout << "로비에 입장했습니다!" << endl; cout << "-------------------------" << endl; //플레이어 직업 선택 SelectPlayer(); } }
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
HTML Form 전송에서 같은 form action 에 대해 method 가 다를때
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]예를들어 본문에서 form action ="/save" 에 대해method="get" 일 때랑 method="post" 일 때랑서버쪽에서 처리하는 결과가 같나요? 아니면 결과 자체도 달라질 수 있어서 주의해야하는건가요?주의! GET은 조회에만 사용! 이 부분이 그냥 암묵적 룰에 의해 GET 은 조회에만 쓰자 라는 말인지.아니면 결과 자체가 달라질 수 있으니 주의하라는건지궁금합니다.
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
패킷이 라우터를 통해 인터넷 세계로 나온 다음 remote host로 전달되는 과정
패킷이 인터넷 세계로 나온 다음 remote host로 전달되기 까지 정말 수 많은 라우터들을 만나게 될텐데, 거미줄처럼 엮여있는 수많은 라우터를 헤치고 어떻게 remote 까지 도착하게 될까요??라우터는 L3이고 그 다음 라우터로 도착할때까지 오직 IP 주소만으로 식별하여 해당 라우터에 패킷을 보낼 수 있는 건가요?? 이 라우터들은 서로 물리적으로 연결되어 있지 않을 텐데 그렇다면 어떻게 상대방의 라우터의 위치를 식별할 수 있는 것인가요??L2 수준에서 ARP를 사용해 mac 주소를 파악했던것과 같은 이치일까요??
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
패킷이 라우터를 통해 인터넷으로 나간 후에 다른 라우터로 스위칭되는 과정을 모르겠습니다.
지금까지 제가 이해한 네트워크 흐름은 이렇습니다.로컬 프로세스에서 Socket에 IO를 통해 Stream data 생성 (브라우저라면 HTTP Request를 Stream으로 TCP에 전달하겠군요)OS 수준인 TCP에서 일련의 Stream data를 Segment들로 분할하며, 이때 TCP 헤더에 Remote Endpoint의 Port 번호가 추가TCP에서 받은 Segment를 Packet에 캡슐화. 이때 Source IP와 Remote IP가 Packet 헤더에 추가L4에서 Packet을 Frame으로 캡슐화. 이때 자신이 속한 사설망의 L2 Switch의 mac 주소가 Frame 헤더에 추가Frame이 pc의 NIC를 출발하여 L2 access에 도착L2 access에서 L2 Distribution으로 Frame 전달 (없을 수도 있겠네요)L2 Distribution에서는 Frame을 디캡슐화하여 패킷을 확인하고 해당 패킷의 Source IP를 자신의 public IP로 변환 후 인터넷 세계로 패킷을 전송... 8번 과정부터 머릿속에 잘 그려지지 않는데, 인터넷 세계에서 해당 패킷이 가고자 하는 remote host로 가기 위해서는 어떤 과정을 거치게 되나요??? 이 세상에는 ipv4 갯수만큼 엄청나게 많은 라우터들이 존재할텐데 말입니다... ARP가 그러했듯 라우터들끼리 미리미리 주변 라우터가 어디에 있는지 broadcast로 파악을 해두고 있는 것일까요?? 그리고 인터넷에서는 remote host가 속한 사설망에 패킷이 도착할때 까지는 L3 끼리만 스위칭을 하게될까요?? 각 라우터들도 자신만의 사설망에 속해 있을 것이고 그렇다면 자신이 관리하는 L2 스위치도 있을 것인데, 패킷이 remote host로 전달되느 ㄴ과정에서 L2, L3, L2, L3 로 번갈아가면서 전달되지 않을까라는 생각이 듭니다.
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
라우터 ip와 게이트웨이 ip
안녕하세요! 제가 강의를 듣고 게이트웨이 ip를 알고싶어서 찾아봤는데 라우터 ip가 게이트웨이 ip랑 같은 뜻인건가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
pyinstaller UnicodeDecodeError 가 발생합니다.
안녕하세요. 강의 잘 듣고 있습니다.다름이 아니라, pyinstaller 대부 modulegraph.py 에서 오류가 있어서 이것저것 인코딩을 바꿔줘도 문제가 사라지지 않습니다.pyinstaller가 문제가 없다고 한다면 제 쪽 환경에서 문제가 있는건데 아무리 서치를 해도 compat.py? 쪽에 문제가 있는 분들은 많으신데 modulegraph에 문제가 있다는 분은 안보이네요..명쾌한 해결책을 가지신 분들 꼭 해답을 알려주세요..
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
패킷을 다음 라우터로 넘길때 단편화가 이루어질 수 있는 이유가 궁금합니다.
라우터가 MTU 용량을 다 받을 수 없을때 단편화가 이루어져서 보내지고 단편화 현상을 해결하기위해 보낼때부터 사이즈를 낮춰서 보낸다고 하셨는데, 그러면 처음부터 라우터(패킷의 이동경로)의 경로를 알고 있는걸까요? 아니라면 어떻게알고 다음 라우터로 넘어갈때 사이즈를 낮춰서 보낼수 있을까요?