토이프로젝트
-
LANShare 파일 전송 프로토콜 구축 - 재정립토이프로젝트/LANShare 2023. 2. 28. 20:14
지금까지 세 번째 프로토콜을 수정 중입니다...뭔가 억지로 만든 것 같아서, 다음과 같은 프로토콜을 새롭게 정의했습니다.전체 패킷의 크기 정보를 아예 통으로 전달하는 방식입니다.간단히 내가 보내고자 하는 데이터를 정의해보면 다음과 같습니다.명령어 정보 (4바이트)실제 데이터의 길이 (4바이트)실제 데이터 (n 바이트)위의 세 데이터가 "Hello World" (총 11바이트 ANSI 문자열)인 경우,명령어 정보를 담을 공간 4바이트 + 실제 데이터 길이를 담을 공간 4바이트 + 실제 데이터 11바이트를 합하면 총 19바이트입니다. 그리고 이제 총 19바이트를 담을 수 있는 공간을 4바이트 크기로 하나 더 만듭니다.그러면 총 23바이트가 됩니다.위와 같이 보내면, 받는 쪽에서는 가장 먼저 앞의 8바이트 ..
-
LANShare 파일 전송 프로토콜 구축 - 프로토콜 정립토이프로젝트/LANShare 2023. 2. 5. 20:52
일반적으로 소켓통신을 하더라도, 송신자가 Send(..) 를 하더라도 해당 내용이 바로 원하는 클라이언트에게 전송되는게 아니라, 송신 버퍼에 저장이 되었다가 어느정도 쌓인 경우 전달한다. 수신자가 Recv(..) 를 하더라도 수신버퍼에 쌓여있는 데이터를 읽어온다. 그렇다면 수신자가 어떤 행위를 해야할까? 라는 생각을 했을 때 다음과 같은 생각이 들었다. 1. 송신자, 수신자가 둘 다 처음 받는 8바이트는 메타데이터 정보이다. 2. 인지를 하고 있다면 해당 메타데이터의 정보를 보고 원하는 데이터만큼 수신을 한다. 이 상태라면 원하는 데이터를 다 받을 수 있을 것 같았다. 위 그림과 같이 명령어 정보와 수신해야할 데이터의 크기 정보만 보내 후에 원래 보내고자 했던 데이터를 잘라서 보내던 통으로 보내던 계속해..
-
LANShare 파일 전송 프로토콜 구축 - 문제점 발생토이프로젝트/LANShare 2023. 1. 27. 19:27
이전에 설계 했던 프로토콜의 문제점이 한가지 있다. 이런 형태로 정보를 송신할 경우 다음과 같은 문제가 생긴다. 데이터를 보내는건 좋은데, 문제점이 소켓 내부적으로 처리하는 방법이 다르다. TCP 통신에서는 Application이 메세지를 보낸다고(Send) 하더라도 바로 전송되는 것이 아니다. 소켓 버퍼(Send Socket Buffer) 라는 버퍼에 쌓인 후 적절한 시기에 상대방에세 메세지가 전송되고 버퍼가 지워진다. 받는쪽에서도 마찬가지로 메세지가 오면 일단, 소켓버퍼에 저장된 후 Application에서 Read 함수를 호출 할 때 소켓 버퍼에 쌓인 메세지를 읽어들인다. 그럼 저런식으로 보낸 메세지가 만약 8바이트라고 가정해보자. 1. 앞에 4바이트는 명령어 정보 2. 뒤에 4바이트는 추가적인 정..
-
LANShare 파일 전송 프로토콜 구축토이프로젝트/LANShare 2023. 1. 23. 22:41
LANShare 파일 전송 프로토콜 구축 내용 의미 있는 파일이 생성되는 순서는 다음과 같다. 빈 파일을 생성한다. 파일에 데이터를 추가한다. 파일이 의미있는 파일이 되기 위해서는 위와 같은 과정을 거쳐야한다. CreateFile을 통해 저장될 파일을 생성한다. (이때 CreateFile이 호출이 된 시점에서의 파일 크기는 0바이트 이다.) 이후, WriteFile을 사용하여, 이전에 생성된 파일에 데이터를 추가한다. 모든 데이터를 추가한 경우 비로소 유효한 파일이 된다. 서버와 클라이언트의 관점에서 보면 다음과 같다. 서버는 P2P에 접속된 클라이언트에게 파일생성하라는 명령을 보낸다. 이때, 클라이언트는 데이터를 받았을 때, 이 데이터가 어떤 데이터 인지는 모른다. 그러므로, 미리 정의된 프로토콜을 기..
-
LANShare 프로젝트 소개토이프로젝트/LANShare 2023. 1. 23. 20:16
이 프로젝트는 다음과 같은 사례에서 시작되었습니다. 일반적으로 대학교에서는 새로운 프로그램을 도입할 경우, 해당 프로그램을 사람이 직접 설치를 해야합니다. 하지만, 이러한 방식은 상당히 레거시합니다. 반복적이며 불필요한 시간을 할애해야 합니다. 더욱 스마트하고, 간편한 방법을 사용할 수 있어야합니다. 만약, 어떠한 파일을 받기위해, 누군가가 직접 다음 강의를 위해 프로그램을 삭제하거나 재설치하는 번거로움이 존재해서는 안됩니다. 이러한 부분을 최소화 하기 위해, FTP 서버를 열고 많은 클라이언트가 접속해서 파일을 받아간다면 어떨까요? 하지만, 이러한 방법은 1가지일을 100번반복하기 위해 적은인원이 하기에는 상당히 번거롭습니다. 그렇다면, LANShare 프로젝트를 통해, 클라이언트 PC들의 전원을 키고..
-
<Tistory API Wrapper> 내 블로그의 글 목록 조회 API 테스트 해보기토이프로젝트/Tistory API Wrapper 2022. 12. 24. 23:49
본문만 보고 해보고자 하시는 분들은 아래 내용을 순서대로 확인 해보세요 ! https://kjm99d.tistory.com/9 Tistory 서비스 등록하기 Tistory API 를 사용하는 방법에 대해서 우선적으로 작성합니다. https://www.tistory.com/guide/api/manage/register TISTORY 나를 표현하는 블로그를 만들어보세요. www.tistory.com 위에 링크로 들어가 App 등록을 진행 kjm99d.tistory.com https://kjm99d.tistory.com/10 Authentication Code 사용하여 Access Token 발급 받기 이전 포스팅에서 티스토리 서비스 등록과 Authentication Code를 발급 받았습니다. 사용자의 티스..
-
<Tistory API Wrapper> Authentication Code 사용하여 Access Token 발급 받기토이프로젝트/Tistory API Wrapper 2022. 12. 24. 15:16
이전 포스팅에서 티스토리 서비스 등록과 Authentication Code를 발급 받았습니다. 사용자의 티스토리의 데이터 접근을 위해서 사용자에게 티스토리 인증요청을 합니다. Access Token 은 Get 방식으로 필요한 파라미터를 전달하면, ResponseBody 부분에 Access Token 값을 전달 해줍니다. GET https://www.tistory.com/oauth/access_token? client_id={client-id} &client_secret={client-secret} &redirect_uri={redirect-uri} &code={code} &grant_type=authorization_code 위에와 같이 요청을 해봅시다. PostMan 을 통해 테스트를 해본결과 다음과 ..
-
<Tistory API Wrapper> Tistory 서비스 등록하기토이프로젝트/Tistory API Wrapper 2022. 12. 24. 13:03
Tistory API 를 사용하는 방법에 대해서 우선적으로 작성합니다. https://www.tistory.com/guide/api/manage/register TISTORY 나를 표현하는 블로그를 만들어보세요. www.tistory.com 위에 링크로 들어가 App 등록을 진행합니다. 다음과 같은 창이 뜨면 아래 내용에 맞춰서 작성해주세요. 유형 값 서비스명 원하는 내용으로 작성, 필수아님 설명 로고등록 서비스 URL 본인의 Tistory 주소 입력 EX) https://kjm99d.tistory.com/ 서비스형태 웹서비스 서비스 권한 읽기,쓰기 CallBack 서비스 URL과 동일하게 작성 이후 등록을 누르면 다음과 같이 나타납니다. 본인의 App ID와 Secret Key를 노출시키지 않게 조심해..