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

웹개발

번호 제목 글쓴이 날짜 조회수
122 [Dart] Dart 문법 정리 최고관리자 09-09 24,463
121 [Flutter] absorbpointer-and-ignorepointer 최고관리자 09-08 23,790
120 [PHP] 타입선언 최고관리자 08-22 23,621
119 [PHP] error_level 셋팅과 실제 출력 최고관리자 08-21 23,723
118 [MySql] 타입지정시 괄호안의 숫자 최고관리자 08-18 23,753
117 [MySql] MySQL 최적의 데이터 타입 선택 방법 최고관리자 08-18 23,433
116 [MySql] 인덱스 조회시 주의 사항 최고관리자 08-18 23,434
115 [MySql] NOT NULL과 DEFAULT 를 동시에 쓸 필요가 있는가? 최고관리자 08-18 23,454
114 [Flutter] Row and Column 최고관리자 08-16 23,316
113 [Flutter] Linting 설정으로, 흔하게 실수할 수 있는 것을 build 전 방지하기. 최고관리자 08-16 23,476
112 [PHP] PHP 7.x PHP 8.x에서의 조건문 최고관리자 07-26 23,448
111 [JS] Webpack을 쓰는 이유 최고관리자 07-24 23,507
110 [Vue] Vue Router 최고관리자 07-22 23,387
109 [Vue] Vue.js 기본 원리 최고관리자 07-22 23,875
108 [MySql] 쿼리 결과를 합치는 union vs union all의 차이 최고관리자 07-10 23,399
107 [Vue] 일반적인 프로젝트의 구조에 대해 알아보자. 최고관리자 06-18 23,464
106 [JSP] vue등의 스크립트 분석을 위해 %태그 정도는 알자. 최고관리자 06-18 23,594
105 [MySql] 페이징(paging) 쿼리시 전체개수를 한번에 처리하는 방법 최고관리자 06-14 24,233
104 [MySql] Join vs Sub Query 비교 최고관리자 06-05 23,643
103 [SQL] SQL Join에 대한 이해 최고관리자 06-05 23,495