본문 바로가기

분류 전체보기73

[Linux]Iterative 기반의 서버, 클라이언트 구현 오늘은 예정대로 에코 서버, 클라이언트를 구현해보도록 하겠습니다. 이전 글에서 작성했던 TCP 서버, 클라이언트의 코드에서 조금만 변경을 하면 되니 금방 끝날 것입니다. Iterative 서버의 구현 방식 이번에 만들 에코 서버는 클라이언트가 전송한 문자열을 그대로 클라이언트에게 재전송을 해주는데요. 이전에 만든 TCP 서버는 클라이언트가 연결된 것을 확인한 후에 문자열을 전송해주고 바로 종료되는 방식이었습니다. 그래서 listen함수 호출을 통해서 만들어진 연결 요청 대기 큐가 별 소용이 없었습니다. 여러 클라이언트와 데이터를 주고받으려면 어떻게 해야 할까요? 바로 반복문을 돌려서 accept함수를 여러 번 호출하면 됩니다. 왼쪽에는 Iterative 서버의 함수 호출 순서를 나타낸 그림입니다. 이렇게.. 2020. 3. 31.
[Linux]TCP 서버/클라이언트 구현 이전 글에서는 TCP, UDP, 그리고 프로토콜 스택에 대해서 알아보았습니다. 이번에 소개할 내용은 TCP 서버/클라이언트에 대한 이론과 실제 구현 코드입니다. 그리고 이번에 소개하는 함수들은 Windows 운영체제에서는 컴파일이 불가능하고, Linux에서만 작동하는 함수입니다. 그 점 참고하고 봐주세요. 오늘 작성할 TCP의 서버 프로그램은 다음과 같은 순서로 구현이 됩니다. TCP 서버 프로그램의 순서 서버의 소켓 생성 서버의 소켓을 서버의 주소 정보로 초기화 클라이언트의 연결 대기실을 생성 클라이언트와 서버의 연결을 진행 데이터의 송수신 소켓 연결 종료 연결 요청 대기상태로의 진입 서버가 listen함수를 호출하면 연결 요청 대기상태가 가능한 상태가 됩니다. 이는 클라이언트와 관련이 있습니다. 서버.. 2020. 3. 30.
TCP/IP Protocol 정리 오늘 공부하면서 중요한 것들을 정리해보았습니다. 앞으로 소켓 프로그래밍에 대해서 올리는 내용들은 '윤성우의 TCP/IP 소켓 프로그래밍', 여러 블로그의 내용들을 정리(참고)해서 올릴 것입니다. 위 그림은 하나의 문제를 작게 나눠서 효율적인 데이터 송수신이 가능할 수 있도록 데이터의 송수신의 과정을 4개의 영역으로 계층화한 것입니다. TCP 소켓을 생성해서 데이터를 주고받을 때에는 LINK IP TCP Application 4개의 계층을 통해서 이루어집니다. UDP 소켓도 마찬가지로 데이터 전송이 4개의 계층을 통해서 이루어지지만, LINK IP UDP Application 전송계층(3번째)에서 서로 차이점을 보입니다. 왜 위와 같은 그림처럼 데이터의 송수신 과정이 4개의 영역으로 세분화됐을까요? 생각해.. 2020. 3. 29.
오랜만에 글 작성 내일부터 공부한 것들 올려야겠다. 2020. 3. 28.
[백준] 2908 풀이 오랜만에 심심해서 알고리즘을 풀어봤습니다. 참고로 이 문제는 문자열 관련 알고리즘을 사용해서 푸는 문제인데, 귀찮아서 숫자로 풀었습니다. 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다. 상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734과 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다. 두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이가 칠판에 적은 두 .. 2019. 12. 29.
클래스 멤버함수를 스레드에서 실행 클래스의 멤버함수를 스레드에서 실행시키려고 하니 다음과 같은 에러가 발생했습니다. Error C2276 '&': illegal operation on bound member function expression 이 에러가 발생한 이유를 찾지 못해서 2시간동안 헛걸음 하던 도중 stackoverflow에 처음 질문을 했습니다. 질문을 영어로 못해서 번역기를 돌렸네요... 혹시 저와 비슷한 상황을 겪으시는 분들에게 도움을 주고자 제가 질문한 주소를 올립니다. https://stackoverflow.com/questions/58659260/how-do-i-run-a-member-function-on-a-thread?noredirect=1#comment103622235_58659260 How do I run a .. 2019. 11. 1.