묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
게임에서 랜선 뽑았다 다시 꽂을 때, 입력 몰아 보내기가 가능한 이유가 궁금합니다
안녕하세요 널널한 개발자님!예전에 게임을 할 때 "랜선을 뽑고 5초 동안 무한 클릭 → 다시 연결하면 입력이 한꺼번에 서버로 전달되는 것처럼 보이는 현상"을 경험한 적이 있습니다.제가 헷갈리는 부분은 다음과 같습니다:버퍼링 영역입력(클릭) 버퍼는 애플리케이션 레벨에서 관리되는 것인지, 아니면 TCP/UDP 자체에서 지원하는 것인지 궁금합니다.UDP 자체에는 순서 보장이나 재전송이 없는데, 그렇다면 "클라이언트 애플리케이션이 버퍼링을 했다가 복구 시 몰아서 보내는 구조"일까요?TCP와 버퍼TCP도 송신 버퍼/재전송 메커니즘이 있으니, 이론적으로는 일정 시간 동안 못 보낸 데이터를 나중에 한꺼번에 보내는 게 가능할 것 같습니다.그렇다면 "버퍼만 있다면 TCP에서도 동일한 효과"가 가능한 걸까요?아니면 이런 식의 입력 버퍼링은 UDP 환경에서만 가능한 건지, 구분이 궁금합니다.정리하자면👉애플리케이션 레벨 버퍼링이냐, TCP/UDP 레벨 버퍼링이냐👉TCP에서도 '랜선 뽑았다가 꽂으면 입력 몰아 보내기' 같은 현상이 가능한가?이 부분을 명확히 알고 싶습니다.예전에 메이플이라는 게임을 했을 때 위와같은방식으로 사람들이 몰리는 상점에 저렇게 뚫어서 들어가는게 유행했었거든요!
-
해결됨홍정모의 따라하며 배우는 C언어
입력버퍼의 초기화 방법 질문입니다.
수고많으십니다. 제목대로 입력 버퍼의 초기화에 대해서 궁금증이 있어 질문 올립니다. #include <stdio.h> int pow(int base, int exp); int main() { int base, exp, q = 2; while (q == 2) { printf("Base and Exp : "); q = scanf("%d %d", &base, &exp); if (q != 2) { printf("Worng enter\n\n"); rewind(stdin); //while (getchar() != '\n'); q = 2; continue; } printf("%d exp %d : %d\n\n", base, exp, pow(base, exp)); } return 0; } int pow(int base, int exp) { int result = 1; for (int i = 0; i < exp; ++i) result *= base; return result; } 이번 강의의 예제를 나름대로 만들어 보았습니다. 저는 입력 버퍼로 인한 오류를 많이 격어서 입력 버퍼를 초기화하는 방법을 찾아보다 rewind(stdin);를 발견하여 사용했습니다. 그런대 강의 커뮤니티의 질문들을 살펴보니 대다수가 버퍼 초기화에 while (getchar() != '\n');를 사용하고 있었습니다. (참고로 전 아직 이 강의까지만 수강했습니다.) 요점은 rewind(stdin); 와 while (getchar() != '\n'); 의 기능적인 차이가 있는지, rewind(stdin);을 사용할때 위험성이 있는지 알고 싶습니다. 답변 부탁드립니다.