C_C++ 프로그래밍
-
[TCP/IP] 소켓 옵션을 사용해보자 (슬라이딩 윈도우 제어)C_C++ 프로그래밍/TCP_IP 2019. 6. 21. 01:59
로재의 개발 일기 슬라이딩 윈도우가 뭔데요? 간단히 말해서 데이터를 전송하기 위한 가상의 공간을 말하며이는 데이터 전송 및 수신에 큰 영향을 미칩니다.내부적으로는 여러가지 일들이 돌아가고 좀 더 복잡하죠. 혹시 필요하시면 슬라이딩 윈도우에 관해서 쓴 글을 참고하시면 좋을 거 같습니다. 슬라이딩 윈도우란?? 파일 전송? 위에서 슬라이딩 윈도우를 조절하면 데이터 전송에 상당한 영향을 끼친다고 말했습니다.하지만, 확실하게 예제를 통해서 육안으로 확인을 해보면 좋겠다.. 라는 생각이 들어서파일 전송 프로그램을 사용하여, 걸리는 시간을 확인해봤습니다. (미구현) 추가적으로 걸리는 시간 출력도 구현하면 좋겠다는 생각이 드네요. 혹시 적당한 파일이 없으신 분들은 매우 큰 텍스트 파일 만들기 위 글을 참고하시면 좋을 ..
-
[QT] 간단한 계산기를 만들어보자 -2C_C++ 프로그래밍/QT 2019. 6. 21. 01:19
로재의 개발 일기 계산기..? "간단한 계산기를 만들어보자 -1"를 통해서는 프로젝트 생성과 기본적인 ui 생성을 진행했습니다. 이번에는 몇 가지 함수를 사용해서pushButton을 클릭할 때 기능을 구현하여계산기를 만들어 보겠습니다. pushButton_click? pushButton을 오른쪽 클릭을 하여 go to slot으로 향합니다. 그러면 다음과 같은 창이 생성이 되는데요. OK를 클릭하시면... 다음과 같은 코드로 이동하는 것을 알 수 있습니다. click 모션 작성하기 1234567891011// pushButton_00을 클랙했을때 모션 void Dialog::on_pushButton_00_clicked(){ if(QString::compare(ui->label_op->text(), "")..
-
[QT] 간단한 GUI 계산기 만들어보자 -1C_C++ 프로그래밍/QT 2019. 6. 21. 00:26
로재의 개발 일기 계산기..? QT를 사용하여 간단한 계산기를 만들어 보겠습니다! long long으로 매우 큰 숫자 범위를 사용할 수도 있지만 루트나 나눗셈을 사용해야 하기 때문에double로 작성하였습니다. 프로그래밍 기초만 있으면 누구든지 따라할 수 있습니다. 프로젝트 생성 상단 바의 가장 왼쪽에 있는 File의 new file or project를 통해서 프로젝트를 생성하면~이런 창이 뜨게 되는데 Qt Widgets Application을 향하여 프로젝트가 저장될 위치를 선택해 주고 QDiglog를 통해서 프로젝트를 생성합니다. (나머지는 모두 default 값으로 진행해 주시면 돼요!) 저는 프로젝트 이름을 "calculator"로 하였습니다. 기본적인 UI를 작성합시다. 기본적인 UI를 작성하..
-
매우 큰 텍스트 파일 만들기C_C++ 프로그래밍 2019. 6. 19. 13:31
로재의 개발 일기 매우 큰 파일?프로그래밍을 하다 보면 데이터의 전송 속도를 알아보기 위해서 서버와 클라이언트 사이에크기가 비교적 큰 데이터가 필요한 경우가 있습니다. 파일을 생성하거나 연 뒤에, 데이터 크기를 사용자에게 입력 받고랜덤한 소문자 알파벳을 추가하는 방식입니다. filewriter.c 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include #include #include int main(int argc, char *argv[]){ FILE *f; if(argc != 2){ printf("Usage [%s] filename", argv[0]); exit(0); } // fileope..
-
[C/C++] [TCP Sliding window] [슬라이딩 윈도우 개념] 슬라이딩 윈도우란?C_C++ 프로그래밍/TCP_IP 2019. 6. 18. 20:23
로재의 개발 일기 MSS? TCP에서는 전송 데이터에 대한 응답(ACK)를 사용합니다.이를 통해서 안전한 데이터의 송수신을 보장이 가능하게 됩니다.TCP는 한번에 전송이 가능한 최대 세그먼트 크기 (TCP MSS)가 정해져 있는데요.이는 MTU와는 다른 개념이며, MSS는 이보다 작은 크기를 가집니다.MTU : 한번에 보낼 수 있는 패킷의 크기 MSS : TCP의 최대 세그먼트 크기 예를 들어 봅시다.MSS가 1KB이고, 10KB의 데이터를 전송한다면데이터는 10개의 패킷으로 나뉘어서 송신이 되게 됩니다.이때 통신의 신뢰를 확보하기 위해서 10번의 ACK가 필요하게 됩니다.즉, ACK를 기다리고 있는 Client의 시간이 낭비되고 있는 것입니다. 이는 비효율적이고 빠른 데이터 송수신을 위해서는 느리지 않..
-
[원격 프로시서 호출] [RPC 개념] RPC란 무엇인가??C_C++ 프로그래밍/뇌를 자극하는 TCP_IP 2019. 6. 16. 21:15
로재의 개발 일기 RPC란?(출처 : geeks for geeks) 네트워크로부터 떨어져 있는 컴퓨터에서 코드를 실행하는 방식으로,원격 프로시저 콜 (Remote procedure call) 줄여서 RPC입니다.네트워크 서버 프로그램에서, 작업 코드를 메인 코드와 독립을 시켜경우에 따라서 Code1과 Code2를 실행이 가능하게 됩니다.이때 Code1은 네트워크 연결, Code2는 코드의 실행을 담당하는 부분으로 세부적으로 나눌 수 있게 됩니다.이를 위해서 만들어진 네트워크 프로그래밍 개발 도구가 RPC입니다. RPC 작동 방식 RPC는 외부의 프로그램을 실행시키는 개념이기 때문에, 프로그램의 이름과 실행 인자가 필요하게 됩니다.따라서 RPC를 이용한 네트워크 프로그램은 실행 인자와 실행할 코드를 명확하..
-
[TCP/IP] [epoll] epoll을 사용한 소켓 프로그래밍 예제C_C++ 프로그래밍/TCP_IP 2019. 6. 10. 20:52
로재의 개발 일기 epoll (사건 기반 파일 처리) epoll을 사용하여 server가 모든 클라이언트의 입력을 일일이 반복문을 순회하면서 검사하지 않고사건이 발생한 파일 디스크립터만 검사하도록 하였습니다. epoll이란? -> https://redcoder.tistory.com/123 클라이언트는 select와 fd_set 함수들을 사용하였고이에 대한 정보를 가까운 시일 내에 정리해서 올리겠습니다. Server.c1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586..
-
epoll 함수와 구조체에 대해서 알아보자C_C++ 프로그래밍 2019. 6. 8. 20:40
로재의 개발 일기 epoll? select나 poll과 비슷하게 관심 있는 파일 디스크립터를 모두 등록하고 이벤트 발생을 감지하는 것에는 차이는 없지만epoll은 사건이 발생한 fd들만의 구조체 배열을 셋팅하여 관리한다.=> 상태 변화에 대해서 일일이 확인이 필요한 전체 파일 디스크립터를 대상으로 반복문을 돌려 일일이 확인할 필요가 없다123456789101112typedef union epoll_data{ void *ptr; int fd; // 이벤트가 일어나게 될 파일 디스크립터 _unit32_t u32; _unit64_t u64;} epoll_data_t; struct epoll_event{ __unit32_t events; // 관찰한 이벤트 epoll_data_t data;}Colored by ..