Syncope.T-*
article thumbnail
Published 2016. 5. 11. 07:29
Real Time Source Coding. My Project
728x90

이번에 혼자 작업한 결과물인데,

Real Time Source Coding으로 RTSC라 부른다.

2012년도에 올림피아드 작품으로 내 놓은거였는데, 자바로 리메이크 해보았다. 물론 성능향상도 말이다.

간단히 말해, Text Ediotr + SVN과 비슷한 개념으로 보면되는데

요근래에 GitHub과 같은게 등장하다보니 딱히 필요가 없어졌다. 예전엔 이게 정말 필요했었는데...쩝 (아이디어 뺏긴거같다)

서버를 열어서 접속한 유저들과 같이 프로젝트를 할 수 있는데 이게 단점이. 저장 먼저 한 쪽이 소스가 되버리는 것.

그래서 이미 이 텍스트에는 접속한 유저가 있습니다. 라는 메시지 띄울려 했는데. 굳이 그렇게 할 필요가 있을까 란 생각이 들더라. 채팅창에서 서로 상호협조 하면 될듯하다.


원하는 기능 있으신 분들은 추가하셔서 사용하시면 될 것 같네요, 일단 제가 원하는 기능은 다 만들어서 업데이트는 없을겁니다.

보안 규율을 설정해, 파일당 한 명의 유저만 들어가던지 하시면 더 좋구요.

FileEvent를 만들어서 또 다른 핸들러로 쓰셔도 됩니다.


주요 기능은 이러합니다.

SWT를 이용한 Window Application 레이아웃 제작 (개발 환경은 WindowBuilder Pro)

Netty 비동기 소켓을 이용하여, Size(임의지정가능) 용량의 해당하는 바이트 크기로 잘라 데이터를 소켓으로 전송합니다.

Client와 Server는 Read 및 For(;;)함수에서 데이터를 관리하고 데이터는 byte[]로 받습니다. 파이프라인 프로토콜은 그렇게만 맞추어 놓았습니다.

데이터는 잘라서 보내야 하기에 string[데이터 자른 수] 형식으로 취하여 .getByte로 전송하였고

임시적으로 헤더와 엔더를 구분하여 파일의 길이, 이름등을 보내어 데이터의 완벽 전송 유무를 판단했습니다.

Editor의 기본언어는 Java로 맞추어져 있고, 원하는 언어 있을 시 , Hightlight클래스를 따로 만들어서 참조시키면 됩니다.

Setting 다이어로그는 ChatRoom에 필요한 유저아이디, 공유 폴더, 프로젝트를 받을 다운로드 폴더, Server Port입력란, IP 표시란이 있습니다.

Setting은 실행파일 경로 \\config\\setting.ini로 저장되며 String line으로 구성했습니다.

메인 메뉴의 Menubar 아이템은 순서대로

접속(클라전용) / 새로고침 / 파일저장(업로드) / 채팅 / 설정 / 서버오픈&클로즈 입니다.



rtsc.zip


프로젝트 추가시 Archive File로 하시고, WindowBuilder Pro 가 이클립스에 설치되어 있어야 이용에 무리가 없습니다.

profile

Syncope.T-*

@Syncope

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...