之前一直听说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);
客户端地址:
<?php //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; ?>