|
|
@socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO,array("sec"=>10, "usec"=>0));当socket_read得不到响应,这里设置时间可以跳过不会陷入死循环
2 d1 v3 k& Y+ B" \& e7 s现在socket读写数据的流程是这样的:/ C3 H. S; s/ G5 }
' |3 b' @- J/ p6 g6 W8 O, v$ r
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
3 c) j* g; _* ?2 r. M1 h) ?+ P0 P# h7 Q# H
socket_set_option($socket,SOL_SOCKET,SO_RCVTIMEO,array("sec"=>60, "usec"=>0 ) );* z6 z! z9 c3 Q7 M5 o+ Y0 I$ o
! h- P* C# d* A
socket_connect($socket, IP, PORT);
9 X6 b ~0 C# Y7 ?2 Y9 ^2 u7 ?& b0 L6 W
socket_write($socket, $strxml, strlen($strxml);
. ?7 T8 O+ @; C; u( l$back = socket_read($socket, 8192);
( k; H2 C( b1 m4 z) D( b6 P2 I% O3 H6 O [0 @) b
socket_read有时候收不到返回数据,应该是超时了,如何修改超时时间?
+ ^3 F2 Z4 _0 ]7 Z. i, T4 Psocket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO,array("sec"=>3, "usec"=>0));//接受超时
" F( U6 Y) N# q% _: Rsocket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO,array("sec"=>2, "usec"=>0));//发送超时
1 h5 {: L' Z( D6 ^, [& m2 u- s% E0 _+ u8 A- ^* f
https://blog.csdn.net/sn_qmzm521/article/details/80756396
' Y, s _0 @1 u% X* @https://blog.csdn.net/Hiking_Tsang/article/details/84788448
/ ~* V, L: w! O. U; t9 q* v
I4 A) V, ?: J! k1 L, U- T8 y |
|