博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php socket实例
阅读量:4138 次
发布时间:2019-05-25

本文共 2134 字,大约阅读时间需要 7 分钟。

一开始对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.\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

转载地址:http://wqhvi.baihongyu.com/

你可能感兴趣的文章
利用thread来简要模拟signal函数功能
查看>>
linux shell “永久环境变量”、“临时环境变量”和“普通变量“之完全解读
查看>>
AlphaGo 4:1 李世石
查看>>
修改svn中的文件名
查看>>
svn diff | grep work看修改的文件
查看>>
txt中的内容复制到excel中无法对齐, 该怎么处理?
查看>>
网络传输的本质(buffer传输)决定了序列化和反序列化的重要应用
查看>>
ldd -r xxx.so命令的重要作用------见招拆招地解决缺库问题(undefined symbol)
查看>>
再来聊聊linux中的nm命令(nm与ldd命令实战)
查看>>
大白话解释互联网后台为什么常用异步server?
查看>>
确定性这剂毒药,你喝过没?
查看>>
GNU makefile英文官方介绍------干货
查看>>
makefile指定头文件和库出错的那点破事
查看>>
C/C++为什么要短路求值?
查看>>
做好参数校验, 不要过分信任前端传过来的值
查看>>
map如何按value来排序------用带pair的vector吧
查看>>
那点代码, 谁都会写!------以后我会在博客中多加入一些思路方面的东东, 少写一些实际的代码
查看>>
配置文件的重要性------轻化操作
查看>>
cp后文件时间会变, mv后文件时间不会变化------定位一个低概率core问题时, 差点误导了自己
查看>>
又是缓存惹的祸!!!
查看>>