|
|
@socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO,array("sec"=>10, "usec"=>0));当socket_read得不到响应,这里设置时间可以跳过不会陷入死循环
1 ^& A" H- f9 m现在socket读写数据的流程是这样的:
$ {/ T( {, [. Z L+ d% Y0 C2 [
+ r6 Z- B0 c+ _2 b( M% B' P- q$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
8 Q& A8 O8 @8 W8 N9 F4 P4 x: ^8 j' j* ]0 y! @6 w* }+ ^+ _" h
socket_set_option($socket,SOL_SOCKET,SO_RCVTIMEO,array("sec"=>60, "usec"=>0 ) );
. R$ C7 b& z. N4 k, T) j" u; l
+ u$ C$ r% E. b" G3 d4 |socket_connect($socket, IP, PORT);
4 K( s1 B8 w5 P1 D& w7 e' l+ Y" [4 ^
( |5 M$ W" @7 @2 usocket_write($socket, $strxml, strlen($strxml);
* l9 p5 @4 J0 q6 n1 U$back = socket_read($socket, 8192);
, n2 _6 j" m) j% X& ~, j, B
0 N8 ^' ~" }% V' t# hsocket_read有时候收不到返回数据,应该是超时了,如何修改超时时间?, i" f$ B# A0 w
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO,array("sec"=>3, "usec"=>0));//接受超时* q2 D9 p/ @7 a8 Y4 _
socket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO,array("sec"=>2, "usec"=>0));//发送超时
2 ^2 k* m8 y* v/ @/ W7 \2 y, h
2 ]; A f8 N* N9 O( shttps://blog.csdn.net/sn_qmzm521/article/details/80756396# c8 i2 @& \5 D- K3 B
https://blog.csdn.net/Hiking_Tsang/article/details/847884485 \4 I. G& v- r3 ]9 r
/ p; _* M0 \5 a3 I. ^" v7 E |
|