묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
IOCP에서 WSASend 사용 관련 및 시간 소요 요청 처리
먼저 좋은 강의 감사드립니다.IOCP를 사용 시 채팅서버에서 수신의 경우는 WSARecv를 사용하였으나, 송신은 일반 send 함수를 사용하고 있습니다.송신의 경우 WSASend를 사용하는 것이 send를 사용하는것 대비 장점이 없는 것인지요?WSASend 사용 관련하여 해당 함수를 사용해야 하는 상황에 대해 설명 부탁드립니다.추가로 IOCP의 thread (GQCS)에서 처리하는 일이 시간이 소요되는 처리를 해야 하는 시나리오 (파일 송신 등)에서, 사용자 수가 증가하는 경우 할당할 수 있는 thread가 없어, 동시 접속이 늘어나는 경우 문제가 발생할 수 있을 것으로 판단됩니다. 이런 경우 어떻게 설계를 하는 것이 타당한지 의견을 구하고자 합니다.감사합니다.
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
IOCP의 WSAOVERLAPPED 구조체 상속에 관해서..
안녕하세요 IOCP 관련 자료를 찾아보던 중 WSARecv/WSASend 할 때 넣어주는 WSAOVERLAPPED 구조체를 상속한 사용자 구조체를 넘겨주는 경우를 봤습니다. 이렇게도 사용이 가능하다면 WSAOVERLAPPED 를 상속받았으니 호환 될 것이고 추가적인 데이터도 담을 수 있어 도움이 되겠다는 생각입니다.하나 궁금한 것이 있는데요 IOCP를 이용해서 넘긴 WSABUFF의 메모리영역은 커널에 의해 보호 받는다고 알고 있습니다. 마찬가지로 WSAOVERLAPPED 구조체도 커널에 의해 메모리 관리가 되는지 만약 관리가 된다면 상속을 통해 추가적으로 들어가는 정보도 관리에 포함이 되는지 궁금합니다감사합니다~
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
메일 질문있습니다
5/31 이벤트 유튜브 영상 (https://youtu.be/3rpEsV0vnB8) 보고서선생님께 메일 보냈었는데메일이 안 간건지보낸 메일 주소가 잘못된건지보낸 방식이 잘못된건지 답변을 못 받았습니다.어떤 메일 주소로 어떻게 캡쳐해서 보내드리면 될까요?
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
Callback 기반 비동기 파일 입/출력 질문
안녕하세요 수업 잘 듣고 있습니다 감사합니다. Callback 기반 비동기 파일 입/출력 부분에 질문이 있습니다. 만약 IoThreadFunction 함수에서 다수의 WriteFileEx 를 호출하고 콜백을 모두 같은 FileIoComplete 함수로 받는상황이 있을경우 테스트 해보니 하나의 파일 IO만 완료되도 SleepEx 가 통과되는 상황이 발생하는데요 이경우 만약 모든 콜백을 받길 원하면 구조적으로 스래드 하나당 하나의 WriteFileEx를 호출하도록 하거나 별도로 이벤트를 이용해서 처리하거나 하는 방법이 떠오르긴 한데 이방법이외에 다른 방법도 있을까요??
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
입/출력 비동기 처리 순서 문제
이벤트 기반 파일 입/출력 강의에서 예제를 통해 프로세스가 요청한 작업의 순서와 운영체제가 실제로 해당 작업들을 처리하는 순서가 달라질 수 있다는 것을 보여주셨습니다.저는 이 예제의 결과를 보면서 프로세스에서 요청한 작업들이 커널 레벨의 큐에 순차적으로 삽입된다고 하더라도, 결국 운영체제도 큐에서 꺼낸 작업들을 비동기로 처리한다는 것으로 이해했는데요. 서로 다른 작업들을 비동기로 처리하기 위해서는, 결국 각 작업들이 서로의 완료 여부와는 관계 없이 독립적으로 수행되기 위해 멀티 Threading과 같은 방식을 처리될 것으로 예상됩니다.궁금한 점은 여기서 생겨났는데요, 이렇게 최종 작업마저 비동기로 처리하게 되면 I/O 작업의 순서가 꼬여 프로세스 입장에서 기대하는 파일의 최종 상태와 실제로 모든 작업을 끝마친 파일의 상태가 달라지는 경우가 발생할 수 있지 않나요?만약에 발생하지 않는다면, 왜 발생하지 않는지 궁금합니다.
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
tcp 통신 관련하여 질문드립니다
안녕하세요 선생님~tcp 관련해서 질문을 드리고 싶습니다. ^^tcp 버퍼라는게 따로 존재하나요? 아니면 소켓 버퍼가 곧 tcp 버퍼인가요?segmentation된 데이터는 어디서 조립되나요? 만약 소켓 버퍼에서 조립된다면 recv했을 때 덜 조립된 데이터를 받거나 하진 않는지 궁금합니다.관련 책에서 본 내용인데요, 송신 버퍼에 1바이트의 여유만 있어도 tcp는 send가 가능하다는데 이러면 데이터가 다른 관련없는 데이터와 섞여서 송신되거나 하지는 않나요?다른건 안그러는데 이상하게 네트워크 쪽만 공부하면 자꾸 깊게 파고들려고 하네요. ;;호기심을 적당히 가져야 진도를 빠르게 뺄텐데... 그래도 좋게 생각해야겠죠? ㅎㅎ항상 좋은 강의 감사드립니다~^^
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
Wireshark을 어떻게 분석해야 하나요?
안녕하세요 선생님^^강의를 보면서 Wireshark 분석도 따라해보고 있는데요,제가 루프백 환경에서 진행을 하고 있어서 그런지 뭔가 뒤죽박죽 같더라구요특히 14번 패킷은 아무데서도 Ack=5가 안나왔는데 Seq=5를 보내니까저로서는 도저히 뭐가 뭔지 모르겠어서.. ㅠㅠ;;어디서부터 실마리를 잡아야 할까요..?분석 관련해서 조언을 얻고 싶습니다!!
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
Windows 프로젝트 만드는 방법
안녕하세요~ IOCP까지 강의를 들으면서 예제들을 다운로드 하면서 실행하고 이해하고 하였습니다. 예제들인, Windows 프로젝트를 다운로드해서 실행하는 방식 말고, 직접 손 코딩이 하고 싶어 만들려고 하니, 오류도 나고 뭐가 뭔지 잘 모르는 부분이 있어 남겨봅니다. 일단 저가 시도 한 부분 적어보고, 수정해야 할 부분 피드백 부탁드립니다.(아니면 그냥 순차적으로 전체적으로 하는 방법 설명해주셔도 됩니다.^^)첫번째로. Windows 데스크 톱 마법사에서 데스크톱 애플리케이션 미리 컴파일된 헤더만 클릭하였습니다.두번째로 미리 컴파일된 헤더 추가하는 방법 링크 https://hungrysoul9.github.io/2019/09/26/add-vs-pre-complied-header/ 처럼 stdafx.cpp 추가하고 stdafx.h 해서 뭘 어떻게 해야되는지 모르겠고,->여기서 조금 헤더파일 pch관련된 부분 수정하고 ctrl+f5 누르면(심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태오류 LNK2019 WinMain@16"int _cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 함수에서 참조되는 확인할 수 없는 외부 기호 IOCP_chat D:\C++\IOCP_chat\MSVCRTD.lib(exe_winmain.obj) 1오류 LNK1120 1개의 확인할 수 없는 외부 참조입니다. IOCP_chat D:\C++\IOCP_chat\Debug\IOCP_chat.exe 1)다음과 같은 오류가 뜹니다..따라서 ->https://pang2h.tistory.com/156링크를 참조해서 속성 링커에 시스템에 하위 시스템을 콘솔 또는 지우니까 해결이 되었는데,,,이렇게 만들어 지는 건가요?해결이 되었다면 되었는데,,C/C++과는 다르게 Windows 프로그래밍은 처음이라,, 어떻게 프로젝트를 만들어야 하는지 정리 한번 부탁드립니다. 또는 맞게 잘 하였다면,, 피드백 부탁드립니다. 감사합니다.(질문 등록하고 수정하고 한 글입니다...^^)
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
IpConfigSample 예제 NIC free 개선 필요합니다
IpConfigSample 마지막 부분에 free 개선이 필요합니다.pNicInfo가 NULL 이므로 free 는 do nothing 중입니다. while(pNicInfo != NULL){ /* Do somethings */ pNicInfo = pNicInfo->Next; } // while loop 벗어난 시점이므로 pNicInfo == NULL free(pNicInfo); // pointer 가 NULL 이므로 free 는 donothing
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
Ctrl-C 구현 내용 중 return True; 에 관하여
exit(0);다음에 return TRUE; 까지 도달하지 못 할텐데, 이건 업계의 코딩스타일 관행같은 건가요?아니면 제가 수업중에 졸은걸까요 ㅜㅜ
-
미해결Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
실습 템플릿 선택
실습 코드를 직접 작성해보면서 연습해보고 싶은데빈 프로젝트로 만들어보면 예제 코드랑 구성이 다른 것 같던데혹시 빈 프로젝트 말고 다른 템플릿을 사용해야 하는건가요? _tmain 이런것도 처음봐서 헷갈리네요..구글링 해 보니까 _tmain을 쓰려면 tchar.h헤더를 불러와야 한다는데 예제 코드에서는 그렇지도 않으니 검색한게 맞는건가 잘 모르겠네요 ㅠㅠ..그냥 main 써도 상관 없는걸까요?==========================내용 추가 =======================말로 설명을 어떻게 해야 할지 몰라서 그림으로 질문드리겠습니다 ㅠㅠ아래 그림 중 왼쪽은 제가 만든 프로젝트 파일에 들어간 모습이고,오른쪽은 선생님 예제 코드 파일 열었을 때 모습입니다. 저는 새 프로젝트 만들기 -> 빈 프로젝트로 시작하였는데, 이렇게 시작하면 안되는 건지에 대한 질문이었습니다.
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
IP주소 개수, Listen과 Accept 사이에서 연결 요청
TCP 에코 서버 제작 : 클라이언트 연결 받기 및 통신 수업에서포트 바인드 코드 설명에서 NIC이 여러개 있으면 IP주소도 여러개 있을 수 있다고 하셨는데, NIC의 개수와 비례해서 IP주소도 늘어나는 것인가요? 예를들어 NIC이 3개이면 IP주소도 항상 3개인 것인지. 아니면 그 이상 또는 이하로 IP주소를 가져도 상관 없는건지 궁금합니다.Listen 코드 설명에서 1번 클라이언트가 접속을 요청하고 Accept 처리까지 끝나서 ~~하는 과정에서 다른 클라이언트가 접속을 요청하면 요청 자체가 날아가서 접속이 안된다 라고 하셨는데, 이때 날아가는 요청은 1번 클라이언트의 요청인지 아니면 다른 클라이언트의 요청인지 궁금합니다.
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
동기/비동기
블록킹/논블록킹 IO동기/비동기 IO이 두가지가 다른 의미로 쓰이는거 같은데항상 어떤 차이가 있는지 잘 모르겠습니다.혹시 차이점 위주로 설명해주실수 있으실까요..
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
같은 공유기 내 서버 실습
같은 공유기 와이파이에서 무선으로 연결된 노트북 2대로 실습하려면따로 설정해줘야 되는것이 궁금합니다.
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
크로스케이블에 관해
두 개의 피시를 연결할 때 꼭 크로스케이블이 있어야 하는지 질문입니다. 그냥 랜 케이블을 꽂아도 랜카드에서 신호를 알아서 바꿔 인식할텐데, 크로스케이블로만 구현할 수 있는 장애 상황같은게 있는지 궁금하네요.
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
특정 이벤트 발생시 호출되는 함수 관련 질문이 있어요!!
강사님.Lookup table 구조로 가게되면 함수 포인터에예를 들어 함수 포인터 배열 이름이 func 일 때,특정 이벤트가 발생할 때, 핸들러 함수에서 내부 로직으로 func[0](); 이런식으로 호출하는 구조도 많이 사용되는 구조인지요 ? ... 그러니까 인덱스 값을 함수가 주입받는 구조가 아니라, 특정 이벤트에 실행될 핸들러 함수에인덱스를 하드코딩해 놓는 구조도 많이 사용되는 구조인지요 ? 예를들면 파일 전송 요청이오면 핸들러에 func[0](); 이런식으로요!!! 제가 프로그래밍 능력이 부족해서 설명이 부족해서 글이 길어졌네요 ...;;