[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
자동등록방지 숫자입력

웹개발

번호 제목 글쓴이 날짜 조회수
42 [MySQL] user Table 권한설명 최고관리자 10-13 2,371
41 [NginX] Codeigniter를 위한 server config 최고관리자 09-09 3,036
40 [Nginx] 역할 최고관리자 09-09 2,978
39 [MySQL] Replace를 이용하여 데이타 내용 치환하기 최고관리자 09-08 1,968
38 [리눅스] Mysql Database 이름을 www.telepasi.com처럼 하면 안됨 최고관리자 09-08 1,926
37 [리눅스] CentOS vsftpd 설치 최고관리자 09-08 1,992
36 [리눅스] 사용자 목록 확인 (Linux User List) 최고관리자 09-08 14,164
35 [NginX] 리버스 프록시(Reverse Proxy)란 최고관리자 09-08 5,365
34 [리눅스] go lang - REST API를 위한 Gin 설치 최고관리자 09-07 2,013
33 [리눅스] go 환경설정 최고관리자 09-07 2,003
32 [리눅스] CentOS7 에서 go Lang 설치하기 최고관리자 09-07 1,968
31 [리눅스] Mysql 원격접속 허용하기 최고관리자 09-07 2,030
30 [서버설치] How to Install PHP 7, NGINX, MySQL on CentOS/RHEL 7.6 최고관리자 09-06 2,035
29 [서버 설치] mysql_secure_installation 최고관리자 09-06 1,943
28 [서버 설치] CentOS7 방화벽 설치 최고관리자 09-06 1,883
27 [DNS] abc.com www.abc.com 레코드 설정 최고관리자 09-05 1,923
26 [리눅스] httpd conf 위치 확인 및 conf 문법검사 명령 최고관리자 09-05 2,644
25 [리눅스] Apache 권한에 대한 참고 사항 최고관리자 09-04 4,640
24 [리눅스] CentOS Apache 주요 디렉토리 최고관리자 09-04 2,100
23 [리눅스] CentOS 6 vs CentOS 7 명령어 대응 최고관리자 09-04 2,217