[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동
안녕하세요 RooKiss님 항상 좋은 강의 올려주셔서 감사합니다..! 외부 네트워크 환경의 제 친구에게 언리얼 클라이언트를 보내준 뒤, 강의를 들으며 쌓아 올린 제 서버에 연결을 하려고 했는데, 서버 소스의 IP 주소 입력란에 127.0.0.1이 아니라 제 외부(공인)IP 주소를 입력하니 예외를 던지면서 서버 프로그램이 죽더라구요.. 제 소스 문제인가 싶어서 선생님께서 올려주신 서버 소스에도 제 외부 IP 주소를 입력해봤는데, 여기서도 예외를 던지며 프로그램이 죽었습니다. 혹시나 싶어 사설 IP주소를 입력했을 때는 서버프로그램이 죽진 않았지만, 클라 쪽에서 접속할 수 없었습니다. 포트포워딩도 해놓았습니다. 서버 소스에 문제가 있는 건가요? 아니면 외부 네트워크에서 클라이언트를 접속 받는 방법에 대해 제가 잘못 이해하고 있는 걸까요?
클래스 실행시에 간헐적으로 오류가 발생하네요. 빌드를 10번하면 7번정도 오류가 발생하는것 같아요. 포트를 이미 사용중이라는 것 같은데... 인터넷에 쳐봐도 해결방법이 안나오네요... 혹시 해결법 아시는분 계실까요?? Abnormal build process termination: C:\Users\박정찬\.jdks\openjdk-21.0.1\bin\java.exe -Xmx700m -Djava.awt.headless=true "-Djna.boot.library.path=C:\Program Files\JetBrains\IntelliJ IDEA 2023.1.3/lib/jna/amd64" -Djna.nosys=true -Djna.noclasspath=true --add-opens jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED "-Dpreload.project.path=C:/Users/박정찬/Desktop/인터넷 강의 자료/자바 김영한/java-basic" -Dpreload.config.path=C:/Users/박정찬/AppData/Roaming/JetBrains/IntelliJIdea2023.1/options -Dcompile.parallel=false -Drebuild.on.dependency.change=true -Didea.IntToIntBtree.page.size=32768 -Djdt.compiler.useSingleThread=true -Daether.connector.resumeDownloads=false -Dio.netty.initialSeedUniquifier=1929828927587536610 -Dfile.encoding=x-windows-949 -Duser.language=ko -Duser.country=KR -Didea.paths.selector=IntelliJIdea2023.1 "-Didea.home.path=C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3" -Didea.config.path=C:/Users/박정찬/AppData/Roaming/JetBrains/IntelliJIdea2023.1 -Didea.plugins.path=C:/Users/박정찬/AppData/Roaming/JetBrains/IntelliJIdea2023.1/plugins -Djps.log.dir=C:/Users/박정찬/AppData/Local/JetBrains/IntelliJIdea2023.1/log/build-log "-Djps.fallback.jdk.home=C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/jbr" -Djps.fallback.jdk.version=17.0.7 -Dio.netty.noUnsafe=true -Djava.io.tmpdir=C:/Users/박정찬/AppData/Local/JetBrains/IntelliJIdea2023.1/compile-server/java-basic_51dbb69c/_temp_ -Djps.backward.ref.index.builder=true -Dtmh.instrument.annotations=true -Dtmh.generate.line.numbers=true "-Djps.kotlin.home=C:\Program Files\JetBrains\IntelliJ IDEA 2023.1.3\plugins\Kotlin\kotlinc" -Dkotlin.incremental.compilation=true -Dkotlin.incremental.compilation.js=true -Dkotlin.daemon.enabled -Dkotlin.daemon.client.alive.path=\"C:\Users\박정찬\AppData\Local\Temp\kotlin-idea-10692411316084801441-is-running\" -Dide.propagate.context=false -classpath "C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/java/lib/jps-launcher.jar" org.jetbrains.jps.cmdline.Launcher "C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/java/lib/jps-builders.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/java/lib/jps-builders-6.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/java/lib/jps-javac-extension.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/lib/util.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/lib/util-8.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/lib/util_rt.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/lib/annotations.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/lib/3rd-party-rt.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/lib/protobuf.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/lib/jps-model.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/java/lib/javac2.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/lib/forms_rt.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/java/lib/aether-dependency-resolver.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/lib/idea_rt.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/JavaEE/lib/jasper-v2-rt.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/Kotlin/lib/jps/kotlin-jps-plugin.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/lib/util.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/eclipse/lib/eclipse-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/eclipse/lib/eclipse-common.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/ant/lib/ant-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/JavaEE/lib/javaee-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/uiDesigner/lib/jps/java-guiForms-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/space/lib/space-java-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/devkit/lib/devkit-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/platform-langInjection/lib/java-langInjection-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/javaFX/lib/javaFX-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/javaFX/lib/javaFX-common.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/Groovy/lib/groovy-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/Groovy/lib/groovy-constants-rt.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/maven/lib/maven-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/gradle-java/lib/gradle-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/JPA/lib/jps/javaee-jpa-jps.jar" org.jetbrains.jps.cmdline.BuildMain 127.0.0.1 49155 24ad3385-4fa5-4cd4-9376-31335102b646 C:/Users/박정찬/AppData/Local/JetBrains/IntelliJIdea2023.1/compile-server Be careful, logger will be shut down earlier than application: Unable to make field private static java.util.IdentityHashMap java.lang.ApplicationShutdownHooks.hooks accessible: module java.base does not "opens java.lang" to unnamed module @2f4d3709 Build process started. Classpath: C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/java/lib/jps-launcher.jar Error connecting to 127.0.0.1:49155; reason: Address already in use: no further information: /127.0.0.1:49155 io.netty.channel.AbstractChannel$AnnotatedSocketException: Address already in use: no further information: /127.0.0.1:49155 Caused by: java.net.BindException: Address already in use: no further information at java.base/sun.nio.ch.Net.pollConnect(Native Method) at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:682) at java.base/sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:973) at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337) at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776) at io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:689) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:652) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at java.base/java.lang.Thread.run(Thread.java:1583) Exiting.
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
안녕하세요. 질문 1. 실무에서 int number = 1; int* pointer = &number; *pointer = 1; 둘 중 어느 형식을 많이 쓰나요? 질문 2. 실제 포인터를 매개변수로 담는 함수와 레퍼런스를 매개변수로 담는 함수 중 실무에서 무엇을 더 많이 쓰나요?
사각형 너비와 높이로 면적 구하는 예제에서 struct Rectangcle { width : u32, height : u32, } fn main() { let rect = Rectangcle{ width:20, height:30, }; println!("가로가 {}, 세로가 {}인 사각형의 면적은 {}이다.", rect.width, rect.height, area(rect)); print!("{:?}", rect.width); } fn area(rect : Rectangcle)->u32 { rect.width*rect.height } 위와 같이 만들었더니 소유권 이전이 일어나더라고요. 크기가 정해진 자료형으로만 이루어진 튜플이 Stack에 저장되는 것 처럼 Rectangle 구조체는 크기가 정해진 자료형이라 Stack에 저장될거라고 생각했는데 소유권 이전이 일어나는 걸 보면 Heap에 저장되는 건가 싶어서 질문 드립니다. Stack에 저장되는 자료형은 Copy 되고, Heap에 저장되는 자료형은 소유권 이전이 되는 방식이라고 생각해서 든 의문인데 제가 잘못 알고 있는 부분이 있을까요?? 좋은 강의 잘 듣고 있습니다.
안녕하세요 저번 Vector Addition 수업에서는 256M(256 x 1024 x 1024)개의 연산을 수행하기 위해서 <<<256*1024, 1024>>>로 커널을 런치하여 Block의 개수에는 제한이 없는 것 처럼 보였는데, 15-5강의에서는 SM의 Thread Block은 32개 까지 가능이라고 하셔서 헷갈리는데 두 개의 Thread Block 개념이 다른 것인지 궁금합니다.
안녕하세요. 먼저 좋은 CUDA 강의를 제공해주셔서 감사합니다. 다름이 아니라 15-4 강의에서 Warp를 동시에 돌린다는 말에 질문이 있습니다. Warp 스케줄링을 저는 아래와 같이 비교하여 이해하였습니다. CPU: Core -> 여러개의 쓰레드 GPU: SM -> 여러개의 Warp 강의 내용처럼, CUDA에서 Warp별로 스케줄링을 관리를 한다면 모든 SP의 Clock들이 같은 Instruction을 수행(SM내 SP들의 Clock들은 Sync가 맞음)하여야 Warp단위로 스케줄링이 가능할 것 같은데, 제 생각이 맞는지 궁금합니다. 감사합니다.
제공해주신 멀티스레드 소켓 프로그램에 LPVOID 형을 가지는 매개변수에 일반 변수를 지정하셨는데 LPVOID 는 포인터와 일반변수 모두 가능 한 건지요? 주신 프로그램을 보면 SOCKET hClient = 0; // SOCKET 형 변수를 선언 hThread = ::CreateThread( NULL, 0, ThreadFunction, (LPVOID)hClient, // 주소가 아닌 값을 지정 0, &dwThreadID); 만약 가능하다면 내부적으로 어떻게 가능한지 확인 부탁드려봅니다. 늘 좋은 강의 감사합니다. 강사님
안녕하세요 강사님! dags_python_with_ templates.py 파일에서 show_templates 함수를 아무 인자도 넣지 않고 실행을 시키는데요, dag 실행시 출력되는 키워드 인자들은 에어플로우 태스크 객체에 기본으로 입력되는 값들인가요? 정확한 원리가 궁금하여 여쭤봅니다
안녕하세요, 해당 강의 10강 block memory interface 부분을 응용하여 프로젝트를 진행하고 있습니다. 제가 목표로 하는 것은 microblaze - axi interconnect - AXI AHBLite Bridge 로 이어지는 Block design 후, microblaze의 내부 메모리에 data를 저장하여 write / read 동작을 시켜 ahb bus를 사용하는 외부 ip에 시스템을 연결하려 합니다. 현재 block design 구성 및 address 설정은 다음과 같습니다. 아래 코드는 제가 write 동작을 위해 작성한 vitis에 c code입니다. #include <stdio.h> #include "platform.h" #include "xil_printf.h" #include "xil_io.h" #include "xil_types.h" // added on 20240411 by dykim #include <unistd.h> #define XPAR_M_AHB_0_BASEADDR 0x44A10000 // added by DYKIM on 20240326 #define TMC_JXSE_BASE_ADDR (XPAR_M_AHB_0_BASEADDR + 4) // added by DYKIM on 20240326 #define TMC_JXSE_ENC_CMD 0x0000 // added by DYKIM on 20240326 #define TMC_JXSE_ENC_SRST 0x0004 // added by DYKIM on 20240326 #define TMC_JXSE_INT_STAT 0x0010 // added by DYKIM on 20240326 #define TMC_JXSE_INT_RAW 0x0014 // added by DYKIM on 20240326 #define TMC_JXSE_INT_EN 0x0018 // added by DYKIM on 20240326 #define TMC_JXSE_ENC_TGT_SIZE 0x0020 // added by DYKIM on 20240326 #define TMC_JXSE_ENC_PIC_SIZE 0x0024 // added by DYKIM on 20240326 #define TMC_JXSE_ENC_PIC_FMT 0x0028 // added by DYKIM on 20240326 #define TMC_JXSE_ENC_PROF 0x002C // added by DYKIM on 20240326 #define TMC_JXSE_ENC_NL 0x0034 // added by DYKIM on 20240326 #define TMC_JXSE_ENC_MODE 0x0038 // added by DYKIM on 20240326 #define TMC_JXSE_ENC_WGT_SET 0x003C // added by DYKIM on 20240326 #define TMC_JXSE_ENC_ERR_INFO0 0x0040 // added by DYKIM on 20240326 #define TMC_JXSE_ENC_ERR_MASK0 0x0044 // added by DYKIM on 20240326 typedef unsigned short u2; typedef unsigned short u1; void SI5386_init (u32 ID) ; void AHB_Out32 (u32 address, u32 data, u2 trans, u1 write); u32 AHB_In32 (u32 address, u2 trans, u1 write); void AHB_RegWrite (u32 address, u32 value, u2 trans, u1 write); u32 AHB_RegRead (u32 address, u2 trans, u1 write); int main() { init_platform(); SI5386_init(0); SI5386_init(1); // print("Hello World\n\r"); // print("Successfully ran Hello World application"); cleanup_platform(); return 0; } void AHB_RegWrite (u32 address, u32 value, u2 trans, u1 write){ u32 data; u2 htrans; u1 we; data = 0x00000000; htrans = 2; we = 1; AHB_Out32(TMC_JXSE_BASE_ADDR + TMC_JXSE_ENC_CMD, data, htrans, we); data = 0x00000101; AHB_Out32(TMC_JXSE_BASE_ADDR + TMC_JXSE_INT_STAT, data, htrans, we); // 0x0010 data = 0x00000101; AHB_Out32(TMC_JXSE_BASE_ADDR + TMC_JXSE_INT_EN, data, htrans, we); // 0x0018 data = 0x00093ee0; AHB_Out32(TMC_JXSE_BASE_ADDR + TMC_JXSE_ENC_TGT_SIZE, data, htrans, we); // 0x0020 data = 0x021c0780; AHB_Out32(TMC_JXSE_BASE_ADDR + TMC_JXSE_ENC_PIC_SIZE, data, htrans, we); // 0x0024 data = 0x00000084; AHB_Out32(TMC_JXSE_BASE_ADDR + TMC_JXSE_ENC_PIC_FMT, data, htrans, we); // 0x0028 data = 0x00000000; AHB_Out32(TMC_JXSE_BASE_ADDR + TMC_JXSE_ENC_PROF, data, htrans, we); // 0x002c data = 0x00000205; AHB_Out32(TMC_JXSE_BASE_ADDR + TMC_JXSE_ENC_NL, data, htrans, we); // 0x0034 data = 0x00000001; AHB_Out32(TMC_JXSE_BASE_ADDR + TMC_JXSE_ENC_MODE, data, htrans, we); // 0x0038 data = 0x00000001; AHB_Out32(TMC_JXSE_BASE_ADDR + TMC_JXSE_ENC_CMD, data, htrans, we); // 0x0000 usleep(3000); } void AHB_Out32(u32 address, u32 data, u2 trans, u1 write) { if (trans == 2 && write == 1) Xil_Out32(address, data); } 위 코드에서, trans나 write 변수는 axi ahblite bridge의 output 신호로 둔 것인데 이를 어떻게 c code로 컨트롤 해야할 지 감이 잡히지 않습니다. 이후 보드에 프로그램을 올려 ILA 결과를 확인해보니 아래와 같이 입력으로 준 Ready 신호만 들어오는 것을 확인했습니다. 긴 내용에 죄송스럽습니다. 현재 해당 문제에 대해 혼자 해결해야 하는 문제라 정말 막막하고 어렵습니다. 제가 어느 부분에서 잘못되었는지 알려주시면 정말 감사하겠습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] update 모드에서 기존엔티티에 @Column(unique = true) 를 사용한다음 재시작을 했는데, 변경 사항이 h2에 적용이 되지 않습니다. 그런데 @Column(name="username", unique=true) 를 하니 이번에는 ALTER 쿼리가 나가서 name과 unique 변경사항이 db에 적용이 됩니다. update 모드에서 @Column(unique = true) 를 했을때 적용이 되지 않고 @Column(name="username", unique=true) 이렇게 해야만 적용이 되는 이유를 알 수 있을까요?
안녕하세요, 섹션 7 듣고 있습니다. Apollo-Client를 설치하고 yarn dev 실행하니 저렇게 뜨네요. 해당 파일을 지우거나 해도 이번엔 그 파일이 없다는 이유로 에러가 뜹니다. Node.modules랑 package.lock.json 삭제 후 재설치해도 똑같고요. 조속한 해결 부탁 드리겠습니다.
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
다른분들께 비슷한 답변 주신것들 모두 읽었는데요.. 아무리 해도 이해가 안가서요... 강의에서요 border속성은 기본 속성이라고 하셨으니 focusedBorder, enabledBorder, disabledBorder, errorBorder, focusedErrorBorder 의 기본 속성이라고 생각합니다. 그럼 예제에 focusedBorder, 를 입력하기 전에는 border 속성을 가져야 하는 거 아닌가요? 또한 enabledBorder도 입력하기 전에는 border 속성을 가져야 하는 거 아닌가요? 마치 border은 작동을 안하는 거 처럼 보여집니다. 그래서 기본 속성이라는 말이 이해가 안갑니다. 적용이 안되는 기본 속성이라는건 없으니까요 . 이해가 안가서 질문을 남깁니다...! ㅠㅠ 선생님...!
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 제가 자바에 대해 제대로 이해하고 있는지 궁금해서 질문드립니다. clearStore가 컴파일 오류나는이유가 repository의 타입이 MemoryMemberRepository의 부모클래스인 MemberRepository에는 clearStore메소드가 없어서 오버라이딩 되어있지 않기때문인걸로 알고 있는데 맞나요?