|
|
@socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO,array("sec"=>10, "usec"=>0));当socket_read得不到响应,这里设置时间可以跳过不会陷入死循环, I* y2 x1 o Y
现在socket读写数据的流程是这样的:
5 W' N% m- B+ J1 O6 g7 F9 x% A3 o* k
+ w: Z" {' H2 n$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);' p$ V* p) \0 q; U
4 o; ] b& y+ A1 O" Q f' X* Gsocket_set_option($socket,SOL_SOCKET,SO_RCVTIMEO,array("sec"=>60, "usec"=>0 ) );
; f7 v+ j H' M; C. H; o9 e2 V; K
* L7 ~# V0 e! p( C) m% Esocket_connect($socket, IP, PORT);
- V! q$ _0 V! q- u. r8 Z& O
" x9 t% L2 |8 ]3 T# Y& }0 Osocket_write($socket, $strxml, strlen($strxml);
- @- A J4 z! [! P h4 d `$back = socket_read($socket, 8192);) b3 E* L [- E
N, |! e1 {$ e; C( e, U& a
socket_read有时候收不到返回数据,应该是超时了,如何修改超时时间?. N$ N* k: t# o) s
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO,array("sec"=>3, "usec"=>0));//接受超时
1 }% |$ F# C. {; }socket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO,array("sec"=>2, "usec"=>0));//发送超时
0 e7 q0 A8 S9 g. y, S
( ?' E/ T Z* b" A M" \+ n& Rhttps://blog.csdn.net/sn_qmzm521/article/details/80756396
# u3 L- g/ Q, b1 j2 e* \https://blog.csdn.net/Hiking_Tsang/article/details/84788448/ q" g6 R* t4 f, a
5 ?2 Q) C# q: @7 I7 c+ z1 t, f: s
|
|