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

웹개발

번호 제목 글쓴이 날짜 조회수
22 [리눅스] Apache Document Root 권한설정 최고관리자 09-04 1,618
21 [리눅스] CentOS Version 확인하기 최고관리자 09-04 1,453
20 [리눅스] MySQL 최초 접속 및 설정 최고관리자 09-03 1,745
19 [리눅스] MySQL 5.7 보안설정 최고관리자 09-03 1,543
18 [리눅스] RDate로 시간 동기화 하기. 최고관리자 09-03 1,468
17 [리눅스] 기본설치 (Apache , PHP , MySql) 최고관리자 09-03 2,019
16 [공부] 프로그래밍 공부 사이트 최고관리자 09-01 1,398
15 [기능] Mobile 메뉴 최고관리자 09-01 1,366
14 [기능] Mega Menu 최고관리자 09-01 1,409
13 [기능] 상단에서 메뉴높이가 높고 아래로 스크롤하면 메뉴높이가 줄어듦 최고관리자 09-01 1,416
12 [기능] 상단에 메뉴가 보이다가 아래로 스크롤하면 메뉴가 사라지고 상단으로 가면 메뉴가 보임. 최고관리자 09-01 1,336
11 [기능] 메뉴가 안 보이다가 아래로 스크롤하면 메뉴가 생김 최고관리자 09-01 1,437
10 [기능] Icon으로 구성된 수직/수평 메뉴 최고관리자 09-01 1,281
9 [JS] 자바스크립트 {...} [...] 문법 (비구조화 할당/구조분해 할당) 최고관리자 09-01 1,292
8 [기능] 상단의 높이가 큰 메뉴상태에서 아래로 스크롤하면 상단에 높이가 낮은 메뉴가 고정됨 최고관리자 09-01 1,296
7 [Font] Naversoftware 폰트 리스트 최고관리자 09-01 1,360
6 [Web Font] 직접입력해서 폰트를 확인할 수 있는 사이트 최고관리자 09-01 1,349
5 [CSS - font] unicode-range 최고관리자 08-31 1,577
4 [UI 참고] Oven - 회원가입 최고관리자 08-31 1,311
3 타자기체 - 가로 세로 비율이 고정되어 있는 글꼴로 표현 최고관리자 08-08 1,400