웹솔루션개발 22년 노하우! 해피CGI의 모든것

[해피CGI][cgimall] Perl로 만든 채팅서버 본문

웹프로그램밍 자료실/PERL 자료

[해피CGI][cgimall] Perl로 만든 채팅서버

해피CGI윤실장 2017. 1. 4. 09:18
이 프로그램은 비동기 소켓 방식의 채팅서버입니다. 제가 Perl을
좋아하는 관계로 Perl로 작성을 한번 해 봤습니다. 소켓 프로그래
밍 공부하시는 분은 한번 참고해 보십시오. 아무래도 C나 C++
보다는 훨씬 이해하기 쉬울 겁니다.

다음은 매뉴얼입니다.

Edge chatting ver 0.91 매뉴얼

프로그래머: 이진희
홈페이지: www.jinyedge.pe.kr
E-Mail: jinyedge@hitel.net

-------------------------------------------------------
1. 개요

Edge chatting은 Perl 로 만들어진 소켓 방식의 채팅서버입니다.
이 프로그램은 통상적인 웹기반의 채팅 프로그램과는 달리 select
시스템 콜을 사용한 소켓 프로그램입니다. 이 프로그램을 제작한
목적은 다음의 3가지 이유입니다.

- Perl이 단순히 CGI만을 위한 언어가 아니라는 것을 보여주기 위
해서 만들었습니다.

- Perl로 작성한 소켓 방식의 채팅서버가 가능한지 알기 위해서 만
들었습니다. 혹시 Perl을 사용하여 소켓 프로그래밍을 하고 싶다면
이 소스를 참고하십시오.

- 다른 하나의 이유는 현재의 웹기반의 대화방이 꼴보기 싫어서 만
들었습니다. 아바타도 싫고 GUI 기반의 편리함도 싫더군요. 과거에
하이텔이나 천리안의 텔넷 기반의 대화방이 그리워서 만들었습니
다. 따라서 이 프로그램은 사용하기도 불편하고 모양도 이쁘지 않습
니다.


-------------------------------------------------------
2. 테스트 환경

서버의 경우 윈도우즈 2000과 리눅스에서 테스트를 했습니다. 클
라이언트의 경우는 자바 클라이언트의 경우 역시 윈도우즈 2000과
리눅스에서 테스트를 완료했습니다. 비베 클라이언트의 경우는
윈도우즈 2000에서 테스트를 했습니다.


-------------------------------------------------------
3. 사용방법

- 서버의 경우
Perl이 설치된 곳이라면 어디에서든 실행이 됩니다. main.pl을 실
행하면 서버가 실행됩니다.

- 자바 클라이언트의 경우(java_client)
시스템에 자바가 설치되어 있어야 합니다. 어플리케이션 형태로
실행하려면 java_client 폴더의 Client.bat 파일을 실행하십시오.
그러나 이 경우에는 서버의 주소를 127.0.0.1로, 포트를 8040으로
가정하고 접속을 시도합니다. 자바 클라이언트의 소스를 넣어 두
었으니 참고하십시오.

자바 클라이언트를 애플릿의 형태로 실행하려면 java_client 폴더
전체를 웹서버를 통해 접근이 가능한 폴더로 복사하십시오. 그리
고 client.html 또는 edge_chatting.html을 브라우저에서 실행하
십시오. 이때 접속 주소와 포트는 각각 127.0.0.1과 8040입니다. 이
접속정보를 수정하려면 edge_chatting.html을 편집하십시오.
param 태그의 server_addr, server_port의 값을 각각 원하시는 서
버주소와 서버포트로 변경하시면 됩니다. 이때 서버의 포트를 변경
하는 경우는 서버의 설정사항 중 $port 변수 역시 변경해야 합니다.

- 비베 클라이언트의 경우(vb_client)
필요한 dll 파일들이 모두 있는 경우라면 vb_client 폴더 이하의
edge_chatting_lient.exe 파일을 실행하는 것만으로도 충분합니다.
그렇지 않다면 설치 파일이 필요합니다. 비베 클라이언트의 소스
를 넣어 두었으니 참고하십시오.

- 애플릿 클라이언트의 경우(applet_client)
이 역시 자바를 사용한 클라이언트이지만 몇가지 점에서 기존의
자바 클라이언트와는 다릅니다. 우선 어플리케이션의 형태로는
실행되지 않습니다. 그리고 기존의 자바 클라이언트와는 달리 인
터페이스로 awt를 사용하지 않고 html과 자바스크립트를 사용했
습니다. 그러므로 html과 자바스크립트를 어느 정도 알고 있다면
제한적이나마 클라이언트의 인터페이스를 변경할 수도 있습니다.
서버와의 소켓통신의 경우는 백그라운드의 애플릿이 담당합니다.

애플릿 클라이언트를 실행하려면 applet_client 폴더 전체를 웹서
버를 통해 접근이 가능한 폴더로 복사하십시오. 그리고 client.html
또는 edge_chatting.html을 브라우저에서 실행하십시오. 이때 접속
주소와 포트는 각각 127.0.0.1과 8040입니다. 이 접속정보를 수정하
려면 edge_chatting.html을 편집하십시오. param 태그의
server_addr, server_port의 값을 각각 원하시는 서버주소와 서버
포트로 변경하시면 됩니다. 이때 서버의 포트를 변경하는 경우는
서버의 설정사항 중 $port 변수 역시 변경해야 합니다.


-------------------------------------------------------
4. 설정방법

- 서버의 경우
Option.pm에 있는 다음의 항목을 수정할 수 있습니다.

my $server_name = "Jinyedge chatting server";
my $lang = "ko"; #en = english, ko = korean
my $addr = ""; #default = all addresses
my $port = 8040;
my $r_limit = 100; #limit of room
my $g_limit = 1000; #limit of connection
my $tap = 1; #if you want to know what they are talking set this flag as 1.
my $log = 1; #write log file = 1, don``t write log file = 0

$server_name: 서버의 이름입니다.

$lang: 언어를 선택합니다. 한국어와 영어로 서버의 메시지를 출력할
수 있습니다. ko는 한국어이고 en은 영어입니다.

$addr: 서버의 주소입니다. 아무값도 부여하지 않으면 자동으로 현재
시스템에서 사용 가능한 모든 IP 주소를 사용합니다.

$port: 서버의 포트입니다.

$r_limit: 대화방을 만들 수 있는 한계입니다.

$g_limit: 접속 허용 한계입니다.

$tap: 사용자들의 대화내용을 콘솔에 출력할지 말지를 결정하는 옵션입
니다. 1은 on이고 0은 off입니다. 이 기능을 사용하고 사용자가 많을
경우에는 서버에 걸리는 부하가 매우 큽니다.

$log: 사용자들의 대화내용을 로그파일에 기록할지 말지를 결정하는 옵
션입니다. 1은 on이고 0은 off입니다. 이 기능을 사용하고 사용자가 많을
경우에는 서버에 걸리는 부하가 매우 큽니다. 로그파일은 설치폴더 이하
의 log 폴더에 만들어집니다.

- 자바 클라이언트 애플릿의 경우
처음 실행하는 경우 접속 주소와 포트는 각각 127.0.0.1과 8040입니
다. 이 접속정보를 수정하려면 edge_chatting.html을 편집하십시오.
param 태그의 server_addr, server_port의 값을 변경하면 됩니다.

애플릿의 경우는 보안제약이 있으므로 항상 다운로드된 서버로 접속
을 해야 합니다. 따라서 채팅서버의 주소와 이곳에 입력하는 주소는
일치해야 합니다.


-------------------------------------------------------
5. 기능과 명령어

- 로비 명령어
/H = 도움말, /L = 대화방 리스트, /O = 대화방 만들기
, /J {대화방 번호} = 대화방 입장 , /A = 접속자 명단
, /F {대화명} = 접속자 찾기
,/N {새 대화명} = 대화명 바꾸기, /CLS = 화면 지우기

- 대화방 명령어
/H = 도움말, /L = 대화방 리스트, /O = 대화방 만들기
, /I {대화명} = 초청하기, /A = 접속자 명단
, /F {대화명} = 접속자 찾기,/N {새 대화명} = 대화명 바꾸기
, /R = 대화방 정보, /CLS = 화면 지우기

- 방장 명령어
/K {대화명} = 강제퇴장, /P = 비밀번호 변경, /S = 주제 변경
, /LM = 허용인원 변경, /D = 비밀번호 삭제(공개 대화방으로 변경)

 

홈페이지바로가기 

Comments