PHP实现Socket服务器的代码
2018-09-24 21:34
<?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打开