|
@socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO,array("sec"=>10, "usec"=>0));当socket_read得不到响应,这里设置时间可以跳过不会陷入死循环$ r. }6 x. z1 C8 G: R% R3 H) h
现在socket读写数据的流程是这样的:' ?0 v# M/ P' ^' b0 _0 Z
$ [" I5 }4 ~6 ^! [
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
2 n! F# r. C- K3 ?8 {5 |" W' O4 i. }- J; m! s+ r
socket_set_option($socket,SOL_SOCKET,SO_RCVTIMEO,array("sec"=>60, "usec"=>0 ) );
7 O% d+ q: `) j
6 x- j1 A0 _1 D1 o% T4 g# }socket_connect($socket, IP, PORT);7 s, {* t1 I) e! ^( q0 p
6 C& X: H) b8 p G% ksocket_write($socket, $strxml, strlen($strxml);; {8 G. l: H- \" y+ t5 c
$back = socket_read($socket, 8192);
, Y# P* o' n; m
; ?* j$ k6 B( k, [socket_read有时候收不到返回数据,应该是超时了,如何修改超时时间?
- s7 y6 D( ]1 `8 i0 Z% F8 D; Lsocket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO,array("sec"=>3, "usec"=>0));//接受超时
7 i# D) t8 c# K$ Fsocket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO,array("sec"=>2, "usec"=>0));//发送超时
3 e+ }1 C, F2 }! J* E$ }$ N9 A/ e# x5 x3 v# N# y' S( g# x
https://blog.csdn.net/sn_qmzm521/article/details/80756396
( u4 ~- W# g+ s# h Uhttps://blog.csdn.net/Hiking_Tsang/article/details/84788448
# O p# G; x8 c& B& O3 ~
( d: e6 S; s$ V |
|