|
@socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO,array("sec"=>10, "usec"=>0));当socket_read得不到响应,这里设置时间可以跳过不会陷入死循环+ `+ y% l2 }: g' i; v2 N
现在socket读写数据的流程是这样的:
. [ f! a Q% |$ R1 ]
6 [6 S" Y1 h8 h/ [: X% ]& K$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);( o$ q- \2 m+ l& v" f- [
$ ]2 n: l5 ] n: b# [9 J* h6 |
socket_set_option($socket,SOL_SOCKET,SO_RCVTIMEO,array("sec"=>60, "usec"=>0 ) );
8 r8 s( S! c6 T. U
v$ A$ E4 Z7 gsocket_connect($socket, IP, PORT);
' f2 u7 f1 o2 Q7 q5 c
* H; x% q5 h6 G8 Isocket_write($socket, $strxml, strlen($strxml);- j: `; i- a6 t# a( w
$back = socket_read($socket, 8192);& q* p: k }, ]$ P+ n
- p! ^( M2 ?. b; k; A' P3 `socket_read有时候收不到返回数据,应该是超时了,如何修改超时时间?0 {4 u- U" t4 r+ c; L
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO,array("sec"=>3, "usec"=>0));//接受超时
; q9 o: ]8 A3 r' `. Msocket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO,array("sec"=>2, "usec"=>0));//发送超时
" V+ j) r% r4 G) I( g C. r; ~! D2 l2 h9 d1 K
https://blog.csdn.net/sn_qmzm521/article/details/80756396" O" O2 e2 o5 ~ ^7 u. d
https://blog.csdn.net/Hiking_Tsang/article/details/847884484 f' I5 T& q* `! C: o
" ^& w E( L2 P, y0 Q) n |
|