PHP实现Socket服务器的代码

2018-09-24 21:34

阅读:415

  <?php
ob_implicit_flush();
set_time_limit(0);

$address=192.40.7.93;//换成你自己的地址
$port=10000;

if(($socket=socket_create(AF_INET,SOCK_STREAM,SOL_TCP))==false)
echo错误(socket_create):.socket_strerror(socket_last_error()).<br/>;

if(socket_bind($socket,$address,$port)==false)
echo错误(socket_bind):.socket_strerror(socket_last_error()).<br/>;

if(socket_listen($socket)==false)
echo错误(socket_listen):.socket_strerror(socket_last_error()).<br/>;

/*
Afterthesocketsockethasbeencreatedusingsocket_create()andboundtoanamewithsocket_bind(),
itmaybetoldtolistenforincomingconnectionsonsocket.
*/

while(true){
if(($msgSocket=socket_accept($socket))==false){
echo错误(socket_accept):.socket_strerror(socket_last_error()).<br/>;
break;
}

/*
thisfunctionwillacceptincomingconnectionsonthatsocket.
Onceasuccessfulconnectionismade,anewsocketresourceisreturned,whichmaybeusedforcommunication.
Iftherearemultipleconnectionsqueuedonthesocket,thefirstwillbeused.
Iftherearenopendingconnections,socket_accept()willblockuntilaconnectionbecomespresent.
Ifsockethasbeenmadenon-blockingusingsocket_set_blocking()orsocket_set_nonblock(),FALSEwillbereturned.
*/

$msg=Welcome!<br/>;
//socket_write($msg,$msg,strlen($msg));
$command=;

while(true){
if(($buf=socket_read($msgSocket,2048,PHP_BINARY_READ))==false){
echo错误(socket_read):.socket_strerror(socket_last_error()).<br/>;
break2;
}

/*
Thefunctionsocket_read()readsfromthesocketresourcesocketcreatedbythesocket_create()orsocket_accept()functions.
Themaximumnumberofbytesreadisspecifiedbythelengthparameter.
Otherwiseyoucanuse\r,\n,or\0toendreading(dependingonthetypeparameter,seebelow).
*/

/*
if(!$buf=trim($buf))
continue;//????

if($buf==quit)
break;

if($buf==shutdown){
socket_close($msgSocket);
break2;
}

$tallBack=Yousay:$buf\n;
socket_write($msgSocket,$tallBack,strlen($tallBack));
*/

if(ord($buf)!=13)
$command.=$buf;
else{
$command1=YouSay:$command\r\n;
socket_write($msgSocket,$command1,strlen($command1));
echoUsertyped:.$command.<br/>;
$command=;
}
}
socket_close($msgSocket);
}

socket_close($socket);
?>



然后打开CMD,输入:telnet192.40.7.9310000,自己体验去吧!

注,要把:php_sockets.dll打开


评论


亲,登录后才可以留言!