之前一直听说socket,也没有研究过。最近在研究golang。简单的研究了一下golang的socket。今天也顺便在网上看看php的socket。总结一个简单的例子。
服务器端的代码:
//socket绑定的地址
define("HOST", "localhost");
//需要监听的端口
define("PORT", "8001");
// 设置超时时间
set_time_limit(0);
// 创建一个Socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket\n");
//绑定Socket到端口
socket_bind($socket, HOST, PORT) or die("Could not bind to socket\n");
// 开始监听链接
socket_listen($socket, 3) or die("Could not set up socket listener\n");
//写一个循环不断监听 连接过来的socket
while(true){
print_r("\n\nWaiting client socket ... \n");
//等待一个socket的连接
$connection = socket_accept($socket);
//将数据输出给客户但socket
socket_write($connection, "Hello client\n");
// 获得客户端的输入
$input = socket_read($connection, 1024) or die("Could not read input\n");
//输出客户端传递过来的数据
print_r($input);
//关闭客户端的socket连接
socket_close($connection);
}
// 关闭sockets
socket_close($socket);
客户端地址:
//socket绑定的地址
define("HOST", "localhost");
//需要监听的端口
define("PORT", "8001");
// 设置超时时间
set_time_limit(0);
// 创建一个Socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket\n");
//连接服务器
socket_connect($socket,HOST, PORT);
echo("Writing to server socket ...\n");
//尝试将数据写给服务器
if (!socket_write($socket, "Hello server\n")) {
echo("Write failed \n\n");
}
//从服务器获取数据
$data = socket_read($socket, PORT);
echo $data;
?>