🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 服务端 ~~~ // 创建一个socket对象 $sk = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); // 设置socket允许重用本地地址和端口 socket_set_option($sk, SOL_SOCKET, SO_REUSEADDR, 1); // 绑定ip和端口 socket_bind($sk, '0.0.0.0', 9090); // 监听socket服务 socket_listen($sk, 5); echo "waiting\n"; // 接受客户端连接并返回客户端socket对象,执行这里程序会阻塞 $clientSocket = socket_accept($sk); // 接受客户端发过来的数据 $data = socket_read($clientSocket, 1024); // 客户端发过来的数据 var_dump($data); // 要发送的数据 $msg = 'hello client: '.date('Y‐m‐d H:i:s'); // 发送给客户端数据 socket_write($clientSocket,$msg); // 关闭socket socket_close($clientSocket); socket_close($sk); ~~~ ### 客户端 ~~~ // 创建一个客户端socket对象 $clientSocket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); /** * 连接到服务器端的socket服务和端 * IP地址 * 端口号 */ socket_connect($clientSocket,'127.0.0.1',9090); // 要发送的数据 $msg = 'hello server: '.date('Y‐m‐d H:i:s'); // 客户端向服务器端发送数据 socket_write($clientSocket,$msg); // 获取服务器端的数据 $buf = socket_read($clientSocket,8192); // 输出 var_dump($buf); // 关闭 socket_close($clientSocket); ~~~ ### 让服务端不退出 ~~~ // 创建一个socket对象 $sk = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); // 设置socket允许重用本地地址和端口 socket_set_option($sk, SOL_SOCKET, SO_REUSEADDR, 1); // 绑定ip和端口 socket_bind($sk, '0.0.0.0', 9090); // 监听socket服务 socket_listen($sk, 5); echo "waiting\n"; // 让服务端不退出 while(true){ // 接受客户端连接并返回客户端socket对象,执行这里程序会阻塞 $clientSocket = socket_accept($sk); // 接受客户端发过来的数据 $data = socket_read($clientSocket, 1024); // 获取IP地址和端口号 socket_getpeername($clientSocket,$addr,$port); // 客户端发过来的数据 var_dump($data); // 要发送的数据 $msg = 'hello '.$addr.' client: '.date('Y‐m‐d H:i:s'); // 发送给客户端数据 socket_write($clientSocket,$msg); // 关闭socket socket_close($clientSocket); } s ocket_close($sk); ~~~