묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨이해하면 인생이 바뀌는 네트워크 프로그래밍
강의 외 질문
안녕하세요 강사님강의 내용 질문은 아니지만하나 여쭈어보아도 될까요?프로젝트로 혼자 미니 와이어 샤크를 만들고있는대TCP 헤더 파싱에서 막혀서 질문드려요// 리눅스 환경에서 qt를 이용하여 진행중이에 tcp_H* tcp_header = (tcp_H*)((u_char*)ip_header + ip_header->ihl * 4); qs_ret += "Seq="; qs_ret += QString::number(ntohl(tcp_header->seq)); qs_ret += " Ack="; qs_ret += QString::number(ntohl(tcp_header->ack_seq));이런식으로 파싱하는대 실제 와이어 샤크 값이랑 완전히 다르게 나오는대 짚히시는 이유가 있으실까요 ㅠㅠ?AI로는 답이 안나옴니다.. 아래 헤더를 사용하였어#pragma pack(push, 1) typedef struct tcp_H{ uint16_t source; uint16_t dest; uint32_t seq; uint32_t ack_seq; #if __BYTE_ORDER == __LITTLE_ENDIAN uint16_t res1:4, doff:4, fin:1, syn:1, rst:1, psh:1, ack:1, urg:1, ece:1, cwr:1; #else uint16_t doff:4, res1:4, cwr:1, ece:1, urg:1, ack:1, psh:1, rst:1, syn:1, fin:1; #endif uint16_t window; uint16_t check; uint16_t urg_ptr; }tcp_H; #pragma pack(pop)
-
해결됨독하게 시작하는 C 프로그래밍
stdin, stdout
stdin과 stdout이 콘솔 장치 파일을 가리키는 포인터면 Windows에서는 CONIN CONOUT$을 가리키는 건가요?
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
마지막 열의 노드를 삭제하였을때 읽기 엑세스 위반 발생 건
안녕하십니까 '더미 헤드를 갖는 리스트로 개선 및 검증' 학습하던 도중에, 마지막 노드인 'jang'을 삭제할 시에 읽기 엑세스 위반 오류가 뜨면서 정상적인 종료가 되지 않았습니다. 디버깅으로 살펴보니 pPrev->pNext도 마지막 노드이다 보니 NULL인 상태에서 pPrev->pNext 도 동일하게 NULL 인상태에서 발생한 문제인듯 합니다. 제생각에는 마지막 노드를 삭제할때는 pPrev->pNext NULL 경우에 대한 IF 절을 넣는게 맞아보이는데 맞는 조치일까요?
-
해결됨독하게 시작하는 C 프로그래밍
필수 실습 (최댓값을 반환하는 함수)
안녕하세요 선생님 코드는 잘 돌아가는데 혹시 부족한 사항이 있는지 궁금하여 글 올려봅니다강의 정말 잘 보고 있습니다 감사합니다
-
해결됨독하게 시작하는 C 프로그래밍
아......ㅠㅠ
필기하는 소리가 왜 이렇게 크게 녹음이 되어 있는건지... 이해가 안가네요. 선생님 목소리 듣는데 너무 방해가 되요 ㅠ 미치겠네요 ㅎㅎ 이미 녹음된거 바꿀수도 없고, 스피커 볼륨을 최소로 해놓고 들어보겠습니다
-
해결됨독하게 시작하는 C 프로그래밍
버퍼 내 엔터
제 컴퓨터에선 스캔시 엔터를 누르면 메모리에서 0a라고 뜨지않고 그냥 00이라고 뜨는데 차이가 있는 건가요?
-
해결됨이해하면 인생이 바뀌는 네트워크 프로그래밍
맥에서 Window 가상화 프로그램 사용 문의
안녕하세요. 맥에서 Window 가상화 프로그램인 Parrallels 사용해서 해당 강의 예제 따라갈 수 있나요?윈도우용 개인 노트북이 없어서 문의드립니다...ㅜㅜ감사합니다.
-
해결됨독하게 시작하는 C 프로그래밍
2진수 뺄셈에서 carry-out
2진수의 뺄셈 시 carry out은 단순히 버려진다고 설명 해주셨는데 이 상황과 오버플로우를 판단하는 기준 사이에 어떤 차이가 있는지 궁금합니다.
-
해결됨독하게 시작하는 C 프로그래밍
union 식별자는 실무에서 보통 어디에서 사용하나요?
union 식별자는 실무에서 보통 어디에서 사용하나요?
-
해결됨독하게 시작하는 C 프로그래밍
필수실습문제 공부법 (진도 vs 복습)
필수 실습 문제에서 배열까지 어찌저찌 왔는데배열부터 본격적으로 구현 성공 후 풀이를 본적이 없네요ㅠ기초적인 문제부터 막혀서 답답한데, gpt에게 유사문제를 요청해서 무조건 내 걸로 만들고 다음 진도로 나가야 될지아니면 시행착오 겪으면서 어찌저찌 진도만 빼면 될지 몰라 더 학습방향이 틀어지기 전에 문의드립니다!
-
해결됨독하게 시작하는 C 프로그래밍
예제파일 다운로드
어디서 받을 수 있는 건가요?
-
해결됨Windows 시스템 프로그래밍 - 기본
세마포어 개수에 따른 스레드 점유상태
//#include "pch.h" //#include "Logger/Console/Console.h" #include <string> #include <cstdlib> #include <iostream> #include <Windows.h> HANDLE Semaphore; std::string Strings[10]; void SetString(LPVOID InParam) { int Index = *(int*)InParam; delete InParam; while (true) { Strings[Index] = "Thread" + std::to_string(Index) + ": Is Waiting"; ::WaitForSingleObject(Semaphore, INFINITE); Strings[Index] = "##Thread" + std::to_string(Index) + ": Is Selected##"; ::Sleep(500); ::ReleaseSemaphore(Semaphore, 1, nullptr); } } int main() { Semaphore = ::CreateSemaphore(nullptr, 3, 3, nullptr); for (int i = 0; i < 10; ++i) ::CreateThread(nullptr, 0, (LPTHREAD_START_ROUTINE)SetString, (LPVOID)new int(i), 0, nullptr); while (true) { system("cls"); for (const std::string& String : Strings) std::cout << String << std::endl; ::Sleep(1000); } }안녕하세요 세마포어 강의를 수강하다가 직접 실험하고 있었는데 세마포어 개수가 4개 이하일 때는 스레드 점유상태가 계속 달라지는걸 확인했는데 5개 이상으로 세마포어 개수를 늘리니 이미 점유된 스레드만 계속 점유가 되는 상황이 발생한걸 확인하였습니다. 혹시 이유가 점유가 해제되어 바로 대기상태에 들어갔는데 그 스레드를 바로 os가 또 채택하기 때문일까요?
-
해결됨독하게 시작하는 C 프로그래밍
Visial Studio Code 를 설치해서 사용해도 수업을 따라가는데 지장이 있나요?
visual studio code를 설치해서 사용해도 수업을 따라가는데 문제는 없는지 궁금합니다.
-
해결됨독하게 시작하는 C 프로그래밍
연산자 기본이론 강의 질문
강의 말미에 중간 계산 과정에서 나온 값은 삭제된다고 말씀해주셨는데요,삭제되기 전 중간 계산 과정에서 나온 값 또한 메모리의 빈 부분 어딘가에 저장이 되었다가 삭제되는 방식이 맞을까요?
-
해결됨독하게 시작하는 C 프로그래밍
본 강의에 대한 질문들입니다.
우선 좋은 강의를 제공해주시는 널널한 개발자님에게 감사를 드립니다. 일단 첫번째 질문은 2분 30초 쯤에 말하신 1바이트의 공간을 관리한다 즉 번호표를 매긴다라는 의미에 대한 질문입니다. 제가 아는 배경지식으로 이해한 방법은 주소가 0x0000000000000000부터0xFFFFFFFFFFFFFFFF까지 범위가 있는데 이를 운영체제가1바이트인 공간에 이걸 찾기 위해서1바이트인 공간을 (ex 0x00000ab2332f0001라는 주소를 붙여준다(은행 번호표처럼 사람에게 식별하기위해 번호표를 준다?)라고 이해하는게 맞나요? 2번째 질문은 직접 지정에 대한 내용입니다. 8분쯤 상황을 이해한걸 제가 설명해보겠습니다.직접지정은 제가 지역변수에 int ndata를 선언했다고 가정하면 OS가 ndata의 주소를 할당해주는데그 때 ndata에 지정된 주소를 직접지정된 주소라고 하는건가요? 아님 OS가 할당후에 할당한 주소로 찾아가 우리가 그 주소를 상수로 고정 시키겠다라고 하는게 직접할당인가요? 강사님이 말하시는게 2가지 의미로 해석이 되서 약간 헷갈립니다. 3번째 질문인 간접지정에 대한 내용입니다. 위에 가정을 끌고와서 int ndata라는 변수를 선언한 주소를 저장하기 위해 int *p = &ndata라고 선언을 하면 변수 p라는 공간이 생겨 나고 그 변수 p의 공간에 ndata의 주소를 담아 저장한다. 그런데 p는 ndata가 아니라 다른 사용자가 선언할 데이터의 주소를 담을 수 있기에 변수이고 이를 간접지정이라고 한다 맞나요?
-
해결됨독하게 시작하는 C 프로그래밍
입력값 보정
#include <stdio.h> // 영상에서 나온 해설int main(void){int Input = 0; scanf_s("%d", &Input);if (Input < 1 || Input > 9){printf("1~9사이 정수를 입력하세요.");return 0;}int i = 0;while (i < Input){printf("*\t");++i;}putchar('\n');}문제에서는 입력값을 보정하라는 문구가 있는데 위에서 작성해주신 대로 실행하고 범위에 벗어난 값을 넣었을 때 입력값이 범위에 벗어나면 유효한 값으로 바꿔서 처리하는 보정이 아닌 프로그램이 종료되는 현상이 나타나는데 이 부분에 대해서 궁금증이 남아 글 작성합니다!
-
해결됨이해하면 인생이 바뀌는 네트워크 프로그래밍
프로젝트 제안 수행에 대한 조언을 구하고 싶습니다.
안녕하세요. 강사님.한 번 훓어보고 2번째 보고, 코드를 타이핑 + 모르는 내용은 GPT한테 무슨 내용인지 물어보면서 진행하다보니 내용 이해가 술술 되고 있습니다. 그래서 후에 프로젝트 제안 주신 것도 이렇게 저렇게 할 수 있겠구나 생각을 하고 있습니다. 다만 고민되는 부분은 기간입니다. 제안 주신 프로젝트를 전부 수행하는데 2~3달 기간이 소요되는 느낌이 드는데...현재 자바 스프링 백엔드 개발자 목표로 하고 있습니다.현재 해야할 것이 JAVA + 알고리즘 공부 + HTML + DB + Spring 그 이후 필요한 것이 있다면 추가로 공부를 해야하는 데, 네트워크 프로젝트에 시간을 쏟으면 이후 공부가 너무 늦춰질까봐 어떻게 우선순위를 두어야 할지 고민을 하고 있습니다.현재 학원이라는 환경이 공부하기가 너무 좋은데 내년 1월까지만 자습으로 사용이 가능해서 앞서 해야할 걸 다 끝낸 후에 프로젝트를 들어갈지 아니면 주어진 프로젝트를 완수하고 들어갈지 의견을 구해봅니다.(프로젝트를 진행하고 넘어가는 것이 좋다면 그리 할 것 입니다.)
-
해결됨독하게 시작하는 C 프로그래밍
교차출력에서요
#include <stdio.h> int main(void) { int list[5][5] = {0}; int count = 0; for (int i=0; i<5; ++i) { if(i % 2 == 0) { // 짝수 행: 왼→오 for (int j=0; j<5; ++j) { list[i][j] = ++count; } } else { // 홀수 행: 오→왼 for (int j=4; j>=0; --j) { list[i][j] = ++count; } } } // 출력 for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ printf("%d\t", list[i][j]); } printf("\n"); } return 0;} 저는 4 - j가 생각 안나서 반복문 하나를 더써서 처리를 했는데.. 비효율적이겠죠? 반복문은 최대한 적게 쓰는게 더 나은가요?
-
해결됨독하게 시작하는 C 프로그래밍
전반적인 강의 분위기
네트워크 핵심이론 듣고 만족도가 높아 "전문 네트워크 솔루션 개발자 되기" 코스로 입문하게 되었습니다.전체적인 강의 분위기가 위 강의같이 화면 보면서 같이 이해하는 방식일까요?아니면 반드시 IDE를 옆에 두고 따라하면서 진행해야하는 강의인지 문의드립니다.
-
해결됨독하게 시작하는 C 프로그래밍
visual studio SDL 검사 설정 방법
안녕하세요, 강의 정말 잘 듣고 있습니다!SDL 설정을 따라해 보려고 하는데, 쉽지 않아서 이렇게 질문을 남깁니다. 알려주신 단축키(alt + F7)도 안되고, 나름 검색해본 방법들도 제가 사용하는 visual studio 에서는 적용이 되지 않는 것 같습니다. 도움을 구합니다. 감사합니다. <SDL 설정 창> -> 이걸 하고 싶어요...<사용 중인 visual studio> tool -> property -> 설정하기project -> property -> 설정하기현재 프로젝트에 우클릭 -> property -> 설정하기위의 3가지를 시도해보았지만 실패했습니다...