现在的位置: 首页 > 综合 > 正文

socket实例

2018年05月27日 ⁄ 综合 ⁄ 共 1962字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.