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

웹개발

번호 제목 글쓴이 날짜 조회수
62 [Linux] CentOS postfix 메일서버 설치 및 설정(sendmail 설정) 최고관리자 12-23 1,383
61 [Ubuntu] 인터넷 연결이 안될 때 최고관리자 12-07 1,200
60 [Apache SSL] Ubuntu 인증서(전자서명) 최고관리자 11-24 1,303
59 [Ubuntu] ssl 임시 인증서 준비 및 발급받기 최고관리자 11-23 1,682
58 [Ubuntu] apache2 환경설정 생성기 최고관리자 11-23 2,904
57 [Ubuntu] apache2 설치 최고관리자 11-23 1,203
56 [vi 편집기] 단축키 최고관리자 11-23 1,127
55 [유용한 블로그] ^^.^^ 최고관리자 11-19 1,136
54 [JS] TimelineJS - 시간의 흐름을 네비게이션화 최고관리자 11-19 1,205
53 [JS] 스크롤을 감지하여 사이트의 헤더를 보이거나 숨기기 최고관리자 11-19 1,336
52 [Linux] NAS Mount 최고관리자 11-12 1,148
51 [React] React활용 최고관리자 11-10 1,184
50 [PHP] exec 실행에 대한 응답코드 최고관리자 11-02 1,532
49 [Linux] Shell Script 최고관리자 10-26 1,439
48 [폰트] 폰트 찾기 사이트 최고관리자 10-21 1,245
47 [통신] Socket packet test Program 최고관리자 10-20 1,729
46 [통신] 맥용 Socket Test Program 최고관리자 10-20 1,524
45 [통신] Mac에서 TCP Socket통신 테스트 하기 최고관리자 10-20 2,793
44 [NginX] 504 Gateway Time-out 에러와 해결방법 +1 최고관리자 10-16 24,455
43 [NginX] 설정 최고관리자 10-13 1,469