PHP socket 网络编程实例[转]

一开始对socket不太理解,做起东西很模糊,后来做过定位请求的项目,对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. \n Reason: ( $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>" ;
?>
先运行server.php


再运行client.php

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值