PHP socket网络编程

SERVER端

<?php
//确保在连接客户端时不会超时
set_time_limit (0 );

//设置IP和端口号
$address='127.0.0.1' ;
$port=2009 ;    //调试的时候,可以多换端口来测试程序!

//创建一个SOCKET
if (($sock=socket_create (AF_INET,SOCK_STREAM,SOL_TCP ))<0 )
{
echo"socket_create() 失败的原因是:".socket_strerror ($sock )."<br>" ;
}

//绑定到socket端口
if (($ret=socket_bind ($sock,$address,$port ))<0 )
{
echo"socket_bind() 失败的原因是:".socket_strerror ($ret )."<br>" ;
}

//开始监听
if (($ret=socket_listen ($sock,4 ))<0 )
{
echo"socket_listen() 失败的原因是:".socket_strerror ($ret )."<br>" ;
}

do{
if (($msgsock=socket_accept ($sock )) <0 )
{
echo"socket_accept() failed: reason: ".socket_strerror ($msgsock ) ."\n" ;
break ;
}

//发到客户端
$msg="<font color=red>欢迎进入服务器!</font><br>" ;
socket_write ($msgsock,$msg,strlen ($msg ));

echo"读取客户端发来的信息<br>" ;
$buf=socket_read ($msgsock,8192 );


$talkback="收到的信息:$buf<br>" ;
echo$talkback ;
/* if(socket_write($msgsock, $talkback, strlen($talkback))<0)
     {
      echo "socket_write() failed: reason: " . socket_strerror($msgsock) . "\n";
     }
     else
     {
      echo "发送成功";
     }*/


//echo $buf;
socket_close ($msgsock );
}while (true );

socket_close ($sock );
?>




CLIENT端


<?php
error_reporting (E_ALL );
set_time_limit (0 );
echo"<h2>TCP/IP Connection</h2>\n" ;

$service_port=2009 ;
$address="127.0.0.1" ;


$socket=socket_create (AF_INET,SOCK_STREAM,SOL_TCP );
if ($socket<0 )
{
echo"socket_create() failed: reason: ".socket_strerror ($socket ) ."\n" ;
}
else
{
echo"OK.\n" ;
}

echo"试图连接 '$address' 端口 '$service_port'...<br>" ;
$result=socket_connect ($socket,$address,$service_port );
if ($result<0 )
{
echo"socket_connect() failed.\nReason: ($result) ".socket_strerror ($result ) ."\n" ;
}
else
{
echo"连接OK<br>" ;
}

$in="Hello\r\n" ;
$in.="我是Chester\r\n" ;
$out='' ;
$out1='' ;


if (!socket_write ($socket,$in,strlen ($in )))
{
echo"socket_write() failed: reason: ".socket_strerror ($socket ) ."\n" ;
}
else
{
echo"发送到服务器信息成功!<br>" ;
echo"发送的内容为:<font color='red'>$in</font> <br>" ;
}

while ($out=socket_read ($socket,8192 ))
{
echo"接收服务器回传信息成功!<br>" ;
echo"接受的内容为:",$out ;
}


echo"关闭SOCKET...<br>" ;
socket_close ($socket );
echo"关闭OK<br>" ;
?>

原文地址:https://www.cnblogs.com/itfenqing/p/4429568.html