[PHP] TCP Socket Server

#!/usr/bin/php -q

<?php

//-q 옵션은 http protocol 헤더를 제거 하는 옵션입니다.

set_time_limit(0);

define("_IP", "0.0.0.0");  // IP를 지정하면 해당 IP에서의 접속만 허용됨

define("_PORT", "5000");


$sSock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

socket_bind($sSock, _IP, _PORT); 

socket_listen($sSock); 

pcntl_signal(SIGCHLD, SIG_IGN);


while($sock = socket_accept($sSock))

{

socket_getpeername($sock, $sockIp, $sockPort); 

msg("Client Socket : ".$sockIp.":".$sockPort."\n"); 

$pid = pcntl_fork();

msg("Fork\n"); 

if($pid == -1)

{

msg("Fork failed\n"); // 자식 프로세스 생성 실패

exit;

}


if($pid == 0)

{

while(1)

{

$buf = socket_read($sock, 1024); 

if (!$buf)

{

exit;

}

else

{

msg("Client(".$sockPort.") Data : [".$buf."]\n");

$cmd = substr($buf, 0, 4);

msg("Client(".$sockPort.") Cmd : [".$cmd."]\n");

switch($cmd)

{

case "time":

socket_write($sock, date("Y/m/d H:i:s"));

break;

default:

msg("Client(".$sockPort.") : No Cmd\n");

break;

}

}

}

}

}


function msg($msg)

{

echo "SERVER >> ".$msg;

}

?>


0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기
captcha
자동등록방지 숫자입력

웹개발

번호 제목 글쓴이 날짜 조회수
102 [Git] git switch branch명 결과를 ftp로 업로드 하려면 최고관리자 06-02 11,732
101 [Git] git switch branch명 에서 바뀐파일(modifed File) 확인 최고관리자 06-02 5,171
100 [MySql] 테이블 내용 복사하기(인덱스 키 추가하기) 최고관리자 05-24 2,869
99 [Android] 안드로이드에서 PDF 미리보기가 안되는 이유 최고관리자 04-28 3,511
98 [PHPOffice] PHP 8.0 에서 PHPOffice 엑셀저장이 안되는 경우 최고관리자 04-26 1,743
97 [Javascript] window.location Value 최고관리자 04-18 1,658
96 [Git] git clone 과 git pull 의 차이점 최고관리자 04-14 1,368
95 [Git] 특정폴더만 pull 하기 최고관리자 04-14 1,371
94 [Upload] Nginx + PHP7.4 Upload 설정 최고관리자 04-10 1,246
93 [https] Certbot을 활용한 HTTPS 적용과 리다이렉트(ubuntu-nginx) 최고관리자 04-02 9,512
92 [Linux] Bash 명령어 활용 최고관리자 03-26 1,632
91 [MySQL] 중복 데이타 삭제하기 최고관리자 03-16 2,401
90 [Git] 중앙 원격 저장소, 자신의 원격 저장소, 로컬 저장소의 개념 최고관리자 03-01 1,465
89 [GitHub] Git 브랜치의 종류 및 사용법 (5가지) 최고관리자 03-01 1,415
88 Git 한글 메뉴얼 최고관리자 02-25 1,330
87 ERROR 1698 : Access denied for user 'root'@'localhost' 문제 해결 최고관리자 02-24 1,366
86 NGINX + PHP71 + PHP-FPM 설치하기 최고관리자 02-23 1,246
85 (function() { })() 의 의미는? 최고관리자 02-16 1,355
84 [참고] 부트스트랩(bootstrap) 사이트 개발 최고관리자 10-09 1,682
83 [JS] 디바운스(Debounce)와 스로틀(Throttle ) 그리고 차이점 최고관리자 09-14 1,882