|
|
@socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO,array("sec"=>10, "usec"=>0));当socket_read得不到响应,这里设置时间可以跳过不会陷入死循环
8 n- z7 P6 D6 g5 g9 u: L0 G; [现在socket读写数据的流程是这样的:
4 p1 y/ }& N5 N9 Z2 K. F' ^& F6 }; A
- E5 ~9 N. V- h. O9 m- u1 }7 y* p$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
9 \4 k$ y, V5 G3 U, a+ r1 M# g$ l$ U' T; Y: o
socket_set_option($socket,SOL_SOCKET,SO_RCVTIMEO,array("sec"=>60, "usec"=>0 ) );: b, r$ l* h; x' w& l$ V' ~2 `! ~
$ U: T J( P! G, d
socket_connect($socket, IP, PORT);
, f2 ?* `0 _8 j( {/ c! R9 t: x$ u6 {5 U7 B9 u
socket_write($socket, $strxml, strlen($strxml);$ Y. o. }6 |- B7 Z& N3 L: l. j
$back = socket_read($socket, 8192);* b* v+ N" D& [- B4 F+ N" O
6 [0 m$ L& A o2 v, d
socket_read有时候收不到返回数据,应该是超时了,如何修改超时时间?
2 c+ G( \2 V9 e+ R5 {! d. e L& O2 zsocket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO,array("sec"=>3, "usec"=>0));//接受超时
/ K! U, @- }) C0 N6 esocket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO,array("sec"=>2, "usec"=>0));//发送超时
6 y6 @! Z. u% \1 D/ t# l. m: t( G2 x$ P5 J N2 v* N# n) S
https://blog.csdn.net/sn_qmzm521/article/details/80756396
$ Y/ F4 L* d' U2 P+ m$ T+ e% Fhttps://blog.csdn.net/Hiking_Tsang/article/details/847884487 }: X7 G* a( B4 Q% m$ A% G
/ j: Y' r P6 r5 \& G$ L7 e4 S
|
|