PHP socket 网络编程实例

PHP socket 网络编程实例

一开始对socket不太理解,做起东西很模糊,后来做过定位请求的项目,对socket的理解更清楚了。
贴一下示例代码:

SERVER端

Php代码 复制代码  收藏代码
  1. <?php   
  2. //确保在连接客户端时不会超时   
  3. set_time_limit(0);   
  4.   
  5. //设置IP和端口号   
  6. $address='127.0.0.1';   
  7. $port=2009;    //调试的时候,可以多换端口来测试程序!   
  8.   
  9. //创建一个SOCKET   
  10. if(($sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP))<0)   
  11. {   
  12. echo "socket_create() 失败的原因是:".socket_strerror($sock)."<br>";   
  13. }   
  14.   
  15. //绑定到socket端口   
  16. if(($ret=socket_bind($sock,$address,$port))<0)   
  17. {   
  18. echo "socket_bind() 失败的原因是:".socket_strerror($ret)."<br>";   
  19. }   
  20.   
  21. //开始监听   
  22. if(($ret=socket_listen($sock,4))<0)   
  23. {   
  24. echo "socket_listen() 失败的原因是:".socket_strerror($ret)."<br>";   
  25. }   
  26.   
  27. do {   
  28. if (($msgsock = socket_accept($sock)) < 0)   
  29. {   
  30. echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "/n";   
  31. break;   
  32. }   
  33.   
  34. //发到客户端   
  35. $msg ="<font color=red>欢迎进入服务器!</font><br>";   
  36. socket_write($msgsock$msgstrlen($msg));   
  37.   
  38. echo "读取客户端发来的信息<br>";   
  39. $buf = socket_read($msgsock,8192);   
  40.   
  41.   
  42. $talkback = "收到的信息:$buf<br>";   
  43. echo $talkback;   
  44. /* if(socket_write($msgsock, $talkback, strlen($talkback))<0)  
  45.      {  
  46.       echo "socket_write() failed: reason: " . socket_strerror($msgsock) . "/n";  
  47.      }  
  48.      else  
  49.      {  
  50.       echo "发送成功";  
  51.      }*/  
  52.   
  53.   
  54. //echo $buf;   
  55. socket_close($msgsock);   
  56. while (true);   
  57.   
  58. socket_close($sock);   
  59. ?>  
<?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代码 复制代码  收藏代码
  1. <?php   
  2. error_reporting(E_ALL);   
  3. set_time_limit(0);   
  4. echo "<h2>TCP/IP Connection</h2>/n";   
  5.   
  6. $service_port = 2009;   
  7. $address = "127.0.0.1";   
  8.   
  9.   
  10. $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);   
  11. if ($socket < 0)   
  12. {   
  13. echo "socket_create() failed: reason: " . socket_strerror($socket) . "/n";   
  14. }   
  15. else  
  16. {   
  17. echo "OK./n";   
  18. }   
  19.   
  20. echo "试图连接 '$address' 端口 '$service_port'...<br>";   
  21. $result = socket_connect($socket$address$service_port);   
  22. if ($result < 0)   
  23. {   
  24. echo "socket_connect() failed./nReason: ($result) " . socket_strerror($result) . "/n";   
  25. }   
  26. else  
  27. {   
  28. echo "连接OK<br>";   
  29. }   
  30.   
  31. $in = "Hello/r/n";   
  32. $in .= "我是Chester/r/n";   
  33. $out = '';   
  34. $out1='';   
  35.   
  36.   
  37. if(!socket_write($socket$instrlen($in)))   
  38. {   
  39. echo "socket_write() failed: reason: " . socket_strerror($socket) . "/n";   
  40. }   
  41. else  
  42. {   
  43. echo "发送到服务器信息成功!<br>";   
  44. echo "发送的内容为:<font color='red'>$in</font> <br>";   
  45. }   
  46.   
  47. while($out = socket_read($socket, 8192))   
  48. {   
  49. echo "接收服务器回传信息成功!<br>";   
  50. echo "接受的内容为:",$out;   
  51. }   
  52.   
  53.   
  54. echo "关闭SOCKET...<br>";   
  55. socket_close($socket);   
  56. echo "关闭OK<br>";   
  57. ?>  
<?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>";
?>

 

先运行server.php


再运行client.php

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值