>  기사  >  백엔드 개발  >  php_php 스킬의 소켓 생성 및 모니터링 구현 방법

php_php 스킬의 소켓 생성 및 모니터링 구현 방법

WBOY
WBOY원래의
2016-05-16 20:26:331125검색

이 글의 예제에서는 PHP에서 소켓 생성 및 모니터링 구현 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 내용은 다음과 같습니다.

다음은 소켓 생성, 소켓 연결 수락, 소켓 작성 및 연결 초기화와 같은 PHP의 소켓 관련 기능의 예를 제공합니다.

코드 복사 코드는 다음과 같습니다.
$ip="127.0.0.1"; //IP 주소 정의
$port=1000; //포트 정의
$socket=socket_create(af_inet,sock_stream,sol_tcp); //소켓 생성
$bind=socket_bind($socket,$ip,$prot); //소켓 바인딩
$listen=socket_listen($socket); //소켓 듣기
$msg=socket_accept($socket); //소켓 연결 수락
$welcome="php service/n에 오신 것을 환영합니다"; //문자열 정의
소켓_write($msg,$welcome,strlen($welcome))) //소켓 쓰기
소켓_close($socket); //소켓 닫기

*/

$ip="127.0.0.1"; //IP 주소 정의
$port=1000; //포트 정의
$socket=socket_create(af_inet,sock_stream,sol_tcp); //소켓 생성
소켓_clear_error($socket); //소켓 오류 메시지 지우기
소켓_close($socket); //소켓 닫기

/*

*/
$sockets=array(); //배열 정의
/*소켓 쌍을 생성하고 배열에 저장*/
if(!socket_create_pair(af_unix,sock_stream,0,$sockets)) //소켓이 성공적으로 생성되지 않은 경우
{
echo 소켓_strerror(socket_last_error()); //오류 메시지 출력
}
/*생성된 소켓을 이용해 정보를 보내고 받습니다*/
if(!socket_write($sockets[0],"abcdef123n",strlen("abcdef123n"))) //소켓 쓰기가 실패한 경우
{
cho 소켓_strerror(socket_last_error()); //오류 메시지 출력
}
if(!$data=socket_read($sockets[1],strlen("abcdef123n"),php_binary_read)) //정보 읽기에 실패한 경우
{
echo 소켓_strerror(socket_last_error()); //오류 메시지 출력
}
var_dump($data); //소켓 데이터 정보 출력
/*소켓 닫기*/
소켓_close($sockets[0]); //소켓1 닫기
소켓_close($sockets[1]); //소켓2 닫기

/*
*/

$ip="127.0.0.1"; //IP 주소 정의
$port=1000; //포트 정의
$socket=socket_create(af_inet,sock_stream,sol_tcp); //소켓 생성
소켓_set_nonblock($socket); //잠금되지 않은 상태로 설정
소켓_connect($socket,$ip,$port); //연결 초기화
소켓_set_block($sock); //소켓 잠금
스위치(socket_select($r=array($socket),$w=array($socket),$f=array($socket),5))
{
사례 2:
echo "연결이 거부되었습니다! n"; 휴식
사례 1:
echo "n번 연결 성공"; 휴식
사례 0:
echo "연결 시간 초과 n"
휴식
}

/*

*/

/*다음 코드는 소켓 수신 클래스를 정의합니다*/
클래스 소켓리스너는 소켓을 확장합니다
{
function __construct($port=null) //__construct 메소드 정의
{
$this->stream=@socket_create_listen($port?$port:port); //연결을 허용할 포트를 엽니다.
}
function isactive() //isactive 메소드 정의
{
If($this->stream) //연결이 있는 경우
{
사실을 반환; }
else else //연결이 없습니다
{
거짓을 반환; }
}
}


이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.