by 정진동 , http://www.applenet.ze.to

개발 언어
Microsoft Visual Basic 6.0, PHP4.4 , MySQL5
세부사항
파일큐브는 TCP/IP를 이용한 Peer-to-Peer 방식의 파일공유프로그램이다. 유저 한사람마다 모두가 서버가 되고 클라이언트가 되어야한다.
그리고, 파일큐브를 서비스하는 메인서버의 DB (MySQL)는 사용자가 로그인하면 로그인되었다고 DB의 데이터를 수정하고, 사용자의 IP를 저장하여, 다른 Peer가 사용자에게 접속할수 있도록 한다.
어플리케이션과 MySQL DB는 PHP코드를 이용하여 연결하도록 한다.
한 Peer가 다른 Peer에게 접속하면, 접속당하는쪽의 Peer의 윈속(WinSock) 컨트롤 배열을 하나 증가시키고, 데이터를 입력받을때, Wsock_dataarrival() 메소드에서 배열의 index값을 이용하여 받은 데이터를 검사한다.
파일을 보낼때는 패킷 맨 앞에 파일의 byte단위 용량정보를 보내, 전송이 올바르게 되었는지를 검사하도록 한다.
임의의 Peer는 현 서버에 SuperPeer가 없다고 판단되면 랜덤으로 SuperPeer가 되어, 죽은 클라이언트들을 검사하게 된다.
Peer가 파일큐브 서비스에 접속하는 즉시, 현재 Peer가 설정해둔 파일공유목록을 검색하여 Peer의 IP정보와 함께 파일큐브 서비스 SQL서버에 데이터를 올린다.
어떤 유저가 검색어를 던지면, 파일큐브 프로그램에서는 PHP스크립트를 통해 MySQL 쿼리를 던짐으로써 유저들이 가지고 있는 파일들의 목록을 가져올 수 있다.
Peer가 종료할때, 즉, Form_QueryUnload() 프로시져가 호출되면, SQL서버에 있는 파일목록을 지우는 동작을 하거나, 서브 프로그램 데몬을 호출하도록 한다.
당연히 종료되면, SQL서버상에도 유저가 로그아웃 했다고 표시되어야한다.
.
.
.
.
잘 만들수 있을까... 후덜덜 -_-~

