解决方法:启用 Telnet 客户端 打开“控制面板” → “程序” → “启用或关闭Windows功能” 找到“Telnet客户端”,勾选它,点击“确定” 等待安装完成后,重新打开命令提示符(CMD),输入 telnet,如果出现提示说明已安装
第一步 D:>D:\\phpstudy_pro\\Extensions\\php\\php7.4.3nts\\php.exe D:\\phpstudy_pro\\WWW\\1.php(然后不要关闭)
第二步: 另外在开启cmd telnet 127.0.0.1 12345
1.php
<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, '0.0.0.0', 12345);
socket_listen($socket);
while ($conn = socket_accept($socket)) {
socket_write($conn, "Hello TCP Client!\\n");
socket_close($conn);
}
socket_close($socket);
?>
解释: 逐行解释 socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 创建一个基于 IPv4(AF_INET)、流式(SOCK_STREAM)、TCP 协议(SOL_TCP)的 socket。 socket_bind(
s
o
c
k
e
t
,
′
0.0.0.0
′
,
12345
)
;
把
s
o
c
k
e
t
绑定到本地所有
I
P
的
12345
端口上。这样,任何访问本机
12345
端口的
T
C
P
连接都能被这个
s
o
c
k
e
t
接收。
s
o
c
k
e
t
l
i
s
t
e
n
(
socket, '0.0.0.0', 12345); 把 socket 绑定到本地所有 IP 的 12345 端口上。 这样,任何访问本机 12345 端口的 TCP 连接都能被这个 socket 接收。 socket_listen(
socket,′0.0.0.0′,12345);把socket绑定到本地所有IP的12345端口上。这样,任何访问本机12345端口的TCP连接都能被这个socket接收。socketlisten(socket); 让 socket 进入监听状态,准备接受客户端的连接。 while (
c
o
n
n
=
s
o
c
k
e
t
a
c
c
e
p
t
(
conn = socket_accept(
conn=socketaccept(socket)) { … } 进入一个死循环,不断等待客户端连接。 每当有客户端连接时,socket_accept 会返回一个新的连接资源
c
o
n
n
。
s
o
c
k
e
t
w
r
i
t
e
(
conn。 socket_write(
conn。socketwrite(conn, “Hello TCP Client!\\n”); 向刚刚连接进来的客户端发送一条消息:“Hello TCP Client!” socket_close(
c
o
n
n
)
;
关闭与当前客户端的连接。
s
o
c
k
e
t
c
l
o
s
e
(
conn); 关闭与当前客户端的连接。 socket_close(
conn);关闭与当前客户端的连接。socketclose(socket); 当循环结束后(一般不会结束),关闭主 socket。 总结 这段代码就是一个TCP服务器,监听 12345 端口。 每当有客户端(比如用 telnet、nc 等工具)连接到这个端口时,服务器会回复一条“Hello TCP Client!”消息,然后断开连接。 适合用来学习 socket 编程的基本原理。
什么是TCP?
评论前必须登录!
注册