您好,欢迎访问一九零五行业门户网

PHP socket,server,cient,模拟post

fsockopen
以socket方式打开一个连接
我最常用的是模拟post
这个是小李挖掘的到的...不错
至于要模拟get方式....直接file_get_content就行了.
代码见后面
stream_socket_client, 代码见后面
这个和fsockopenfsockopen一样.以socket方式打开一个连接,只是参数不同
stream_socket_server
建立一个socket server端, 代码见后面
如果是建立的是tcp的server 就用stream_socket_accept进行通讯
如果是建立的是udp的server 就用stream_socket_recvfrom和stream_socket_sendto进行通讯,而且stream_socket_server中需要加个参数stream_server_bind
还有个socket扩展,这个是最基础的建立socket,但是从5.3.0开始就放到pecl中了.
这里就不介绍了.
---------------------------- stream_socket client---------------------------
---------------------------- streamsocketserver---------------------------
---------------------------- fsockopen(post)---------------------------
'''',''b''=>'''');
 * @return string
 */
function virtualpost($url, $data) {
       $url = parse_url($url);
       if (!$url) return url不能解析;
       if (!isset($url[''port'']))  $url[''port''] = ;
       if (!isset($url[''query''])) $url[''query''] = ; 
       $encoded = ;
       while (list($k,$v) = each($data)) {
              $encoded .= ($encoded ? & : );
              $encoded .= rawurlencode($k).=.rawurlencode($v);
       }
       //$fp = stream_socket_client($url[''host''].:.($url[''port''] ? $url[''port''] : 80));
       $fp = fsockopen($url[''host''], $url[''port''] ? $url[''port''] : 80);
       if (!$fp) return 不能打开到$url[host]的连接;
       //发送
       fputs($fp, sprintf(post %s%s%s http/1.0 , $url[''path''], $url[''query''] ? ? : , $url[''query'']));
       fputs($fp, host: $url[host] );
       fputs($fp, content-type: application/x-www-form-urlencoded );
       fputs($fp, content-length: . strlen($encoded) . );
       fputs($fp, connection: close );
       fputs($fp, $encoded );
       //接受
       $line = fgets($fp,1024);
       if (!eregi(^http/1.. 200, $line)) return 返回结果错误;
       //滤掉空行
       $results = ;
       $inheader = 1;
       while(!feof($fp)) {
              $line = fgets($fp,1024);
              //把剩余的头信息过滤掉
              if ($inheader && ($line == || $line == )) {
                     $inheader = 0;
              }elseif (!$inheader) {
                     $results .= $line;
              }
       }
       fclose($fp);
       return $results;
}
echo virtualpost(''http://127.0.0.1/test/test2.php'',array(myz=>''马永占''));
?>
其它类似信息

推荐信息