오늘은 대한입니다.
sun's longitude:299 48 45.90 
· 자유게시판 · 묻고답하기 · 알파문서 · RPMS list
· 사용자문서 · 팁/FAQ모음 · 리눅스Links · 자료실
· 서버정보 · 운영자 · Books/FAQ · FreeBSD
/board/delete.php:소스보기  
알파문서
자주 잊어먹거나, 메모해 둘 필요성이 있는 팁이나 문서, 기타 등등
[*** 쓰기 금지단어 패턴 ***]
글 본문 중간에 업로드할 이미지를 추가하는 방법 : @@이미지이름@@
ex) @@foo.gif@@
 ★ 글 지우기 항목입니다. 한번 더 생각하시고 결정하십시오.!!!
제목 228 : [php] socket 함수 예제
 이름  산이 [홈]http://linuxchannel.net/
소켓 함수 예제

<?php
function __mksock()
{
static $bsize = 1048576; // socket send/receive buffer size(Bytes)
static $timeout = array('sec'=>0,'usec'=>500000);

## make socket
if(!$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP))
{
error_log("ERROR: unable to socket_create(): ".__FILE__,0);
return;
}

@socket_set_option($sock,SOL_SOCKET,SO_SNDBUF,$bsize);
@socket_set_option($sock,SOL_SOCKET,SO_RCVBUF,$bsize);
@socket_set_option($sock,SOL_SOCKET,SO_RCVTIMEO,$timeout); // good idea for blocking mode
@socket_set_option($sock,SOL_SOCKET,SO_SNDTIMEO,$timeout);
@socket_set_option($sock,SOL_SOCKET,SO_REUSEADDR,1); // add 2009.01.24
@socket_set_option($sock,SOL_SOCKET,SO_KEEPALIVE,1); // add 2009.01.24
//@socket_set_option($sock,SOL_SOCKET,SO_DEBUG,1); // add 2009.01.24
//@socket_set_option($sock,SOL_SOCKET,SO_OOBINLINE,1); // add 2009.01.26
@socket_set_nonblock($sock); // set to non-blocking mode

return $sock;
}

function __socket_connect(&$sock, $server, $port)
{
$_time = time();
while(1)
{
@socket_connect($sock,$server,$port); // 114 Operation already in progress
$s = @socket_last_error($sock);
if($s==56 || $s==106) { return TRUE; break; }
else if((time()-$_time) >= 3)
{
error_log("ERROR: timeout, unable to socket_connect($sock,$server,$port): ".__FILE__,0);
return; break;
}
}

return;
}

function __socket_request(&$sock, $req)
{
return @socket_write($sock,$req);
}

function __socket_read(&$sock, $timeout=10)
{
static $bsize = 1048576;

$_time = time();
$stream = array($sock);
while(@socket_select($stream,$write=NULL,$except=NULL,0,500000) !== FALSE)
{
if($timeout && (time()-$_time > $timeout))
{
return $rbuf;
break;
}
while($buf = @socket_read($sock,$bsize,PHP_BINARY_READ))
{
if(!trim($obuf.$buf))
{
//@socket_read($sock,$bsize,PHP_NORMAL_READ); // seek 1 bytes
break; // end of header
}
$rbuf .= $buf; $obuf = $buf;
}
break; // require
}
unset($stream,$buf);

return $rbuf;
}

?>
2009년 12월 01일 10:00:19 화(오전)  from 114.111.62.248
0
암호: 공용 보안 SSL 서버가 준비되기 전까지는 off 합니다

apache lighttpd linuxchannel.net 
Copyright 1997-2026. linuxchannel.net. All rights reserved.

Page loading: 3.70(server) + (network) + (browser) seconds