본문 바로가기
반응형

Programming/C4

가변길이 구조체에 대하여... (flexible array member) 네트워크 통신 중에 동적할당 되는 구조체를 만들었고data 를 header 와 body 로 나눈 뒤 body 에도 동적으로 데이터를 받아왔다.그러다보니 header 의 메모리 영역과 body 의 메모리 영역이 다르기 때문에 내가 만들어 놓은 recv 함수로는 header 와 body 를 동시에 처리할 수 없었다. 따라서 header 일 때 recv 호출과 body 일때 recv 호출, 즉 2번의 호출을 해야했다.다른 방법이 있는 지 알아보다가 가변길이 구조체까지 얼핏 듣게 되었다. [가변길이 구조체 선언방법]struct test { int a; int b; char c[];};struct test1 { char c[]; int a; int b;};struct test2 { int a; ch.. 2025. 6. 26.
byte order 에서 char 배열은 문제가 없는가? byte order는 바이트를 처리하는 순서이다.그 처리 순서는 두가지가 있고 Little Endian 과 Big Endian 이 있다.본인은 CS 지식이 부족하여 궁금하였는데char 형 배열은 엔디안 처리가 필요 없다고 하여 Chat GPT 에게 물어보았다. 질문은 "서로 다른 엔디안을 사용하고 있는 시스템 간에 char 형 배열을 보낸다고 하면 엔디안 처리가 필요해?" 였다.서로 다른 엔디안(예: 리틀 엔디안 시스템과 빅 엔디안 시스템)을 사용하는 시스템 간에 char 형 배열을 전송할 경우, 일반적인 경우 char(1바이트) 데이터는 엔디안의 영향을 받지 않기 때문에 추가적인 변환이 필요하지 않습니다.이유char 데이터는 1바이트입니다:char 배열에 저장된 데이터는 단일 바이트 단위의 데이터이므로.. 2025. 4. 17.
Linux c socket 통신 테스트 (recv 할 데이터가 더 클 경우) Linux 에서 C 언어로 socket 통신하는 예제를 작성 해보았다.(OS : Rocky Linux 9.5)여기서 궁금했던 것은 recv 함수를 실행 시에 받을 데이터가 100 byte 이고, 실제로 받은 데이터가 50 byte 라고 하면 어떻게 될 지 궁금했다. 50 byte 를 받고 recv 로 대기를 할 지 아니면 50 byte 만 수행할 지 궁금했다.recv(클라이언트 소켓 fd, 받을 버퍼, 받을 사이즈, 옵션) 이니까받을 사이즈를 100으로 설정하였고,send(서버 소켓, 보낼 버퍼, 보낼 사이즈, 옵션) 에서 보낼 사이즈를 50 으로 설정한 코드이다.#include #include #include #include #include #include #include #include "../com.. 2025. 4. 14.
[ncurses] (1) ncurses 설치 (CentOS, Redhat, Rocky) 오늘은 ncurses 를 해보려고 한다. 환경은 아래와 같다. OS : Rocky Linux release 9.3 (Blue Onyx) 우선 ncurses 패키지에 대해 검색해보았다. [abc@abc demo]$ dnf search ncurses Rocky Linux 9 - BaseOS 2.7 MB/s | 2.2 MB 00:00 Rocky Linux 9 - AppStream 5.4 MB/s | 7.4 MB 00:01 Rocky Linux 9 - Extras 23 kB/s | 14 kB 00:00 =============================================== Name & Summary Matched: ncurses ======================================.. 2024. 2. 23.