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.
/n
Reason: (
$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