php+sockets

--------------------------------------------------------------------开启端口建立通信

 

server.php

 

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

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

//创建一个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

 

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

$service_port = 2003 ;
$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. \n Reason: ( $result ) " . socket_strerror ($result ) . " \n " ;
}
else
{
echo "连接OK<br>" ;
}

//sleep(100);


$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>" ;
?>

 

 

 

你可能感兴趣的:(PHP,socket)