澳门新葡萄京官网首页PHP socket,server,cient,模拟post

这个和fsockopenfsockopen一样.以socket方式打开一个连接,只是参数不同

while (list($k,$v) = each($data)) { 
$encoded .= ($encoded ? “&” : “”); 
$encoded .= rawurlencode($k).”=”.rawurlencode($v); 

stream_socket_server

return $results; 
}/* end function PostToHost */ 
?>

fclose($fp);

$encoded = “”; 

$encoded .= ($encoded ? : );

$line = fgets($fp,1024); 
if (!eregi(“^HTTP/1\.. 200”, $line)) return; 

建立一个socket server端, 代码见后面

fputs($fp, sprintf(“POST %s%s%s HTTP/1.0\n”, $url[‘path’], $url[‘query’] ? “?” : “”, $url[‘query’])); 
fputs($fp, “Host: $url[host]\n”); 
fputs($fp, “Content-type: application/x-www-form-urlencoded\n”); 
fputs($fp, “Content-length: ” . strlen($encoded) . “\n”); 
fputs($fp, “Connection: close\n\n”); 

set_time_limit(0);

$results = “”; $inheader = 1; 
while(!feof($fp)) { 
$line = fgets($fp,1024); 
if ($inheader && ($line == “\n” || $line == “\r\澳门新葡萄京官网首页 ,n”)) { 
$inheader = 0; 

elseif (!$inheader) { 
$results .= $line; 


fclose($fp); 

fputs($fp, Content-type: application/x- );

fputs($fp, “$encoded\n”); 

}elseif (!$inheader) {

<? 
/* 
** POST报文到主机 
*/ 
function PostToHost($url, $data) { 
$url = parse_url($url); 
if (!$url) return “couldn’t parse url”; 
if (!isset($url[‘port’])) { $url[‘port’] = “”; } 
if (!isset($url[‘query’])) { $url[‘query’] = “”; } 

* @author 马永占(MyZ)

$port = $url[‘port’] ? $url[‘port’] : 80; 
$fp = fsockopen($url[‘host’], $port, $errno, $errstr); 
if (!$fp) return “Failed to open socket to $url[host] $port ERROR: $errno – $errstr”; 

$xport = tcp;

echo fread($fp, 1024);

if (!$url) return URL不能解析;

* @name test2.php

echo $errstr ($errno)br / ;

以socket方式打开一个连接

?php

fwrite($conn, ”The local time is ” . date(Y-m-d H:i:s ));

if (!$socket) {

fclose($conn);

fclose($socket);

//建立socketserver

fputs($fp, Connection: close );

if (!isset($url[”query”])) $url[”query”] = ;

echo {$errstr} ({$errno}) ;

}

$ip = 127.0.0.1;

$encoded .= rawurlencode($k).=.rawurlencode($v);

至于要模拟get方式….直接file_get_content就行了.

}

* @date Sun Jan 27 00:45:57 CST 2008

stream_socket_sendto($socket, date(Y-m-d H:i:s ), 0, $peer);

//发送

header(Content-type: text/html;charset=utf-8);

$pkt = stream_socket_recvfrom($socket, 1, 0, $peer);

if ($xport==”tcp”) {

* @copyright 马永占(MyZ)

stream_socket_client, 代码见后面

}

$xport = tcp;

/**

} else {

?php

//滤掉空行

}

if ($xport==”tcp”) {

/**

/**

//把剩余的头信息过滤掉

//得到访问的端口

}

fputs($fp, $encoded );

fputs($fp, Host: $url[host] );

echo listening {$xport}:{$port} … ;

/**

elseif ($xport==”udp”) {

//$fp = stream_socket_client($url[”host”].:.($url[”port”] ?
$url[”port”] : 80));

*

$fp = stream_socket_client($address, $errno, $errstr, 1);

}

* @date Sat Jan 26 23:01:23 CST 2008

* @name test.php

$encoded = ;

$inheader = 1;

}

代码见后面

还有个socket扩展,这个是最基础的建立socket,但是从开始就放到pecl中了.

* @author 马永占(MyZ)

*/

if (!$fp) {

fputs($fp, Content-length: . strlen($encoded) . );

}

$line = fgets($fp,1024);

echo {$value} ;

* @copyright 马永占(MyZ)

while (list($k,$v) = each($data)) {

$results = ;

* @link

//许可一个socket连接,-1超时

*/

$port = 8001;

}

$xportlist = stream_get_transports();

echo transports: ;

?

—————————- fsockopen(post)—————————

streamSocketServer—————————

fclose($fp);

$line = fgets($fp,1024);

我最常用的是模拟post

?

elseif ($xport==”udp”) {

echo virtualPost(””,array(myz=”马永占”));

这个是小李挖掘的到的…不错

这里就不介绍了.

}

fwrite($fp, );

echo $peer ;

else {

if (!eregi(^HTTP/1.. 200, $line)) return 返回结果错误;

if (!isset($url[”port”])) $url[”port”] = ;

* @link

while ($conn = stream_socket_accept($socket,-1)) {

foreach ($xportlist as $value) {

}

//得到访问的端口

$fp = fsockopen($url[”host”], $url[”port”] ? $url[”port”] :
80);

$address = {$xport}://{$ip}:{$port};

if ($inheader ($line == || $line == )) {

* @return string

* @date Sun Jan 27 00:49:00 CST 2008

* @param array $data 要提交的参数 array(”a”=””,”b”=””);

如果是建立的是tcp的server 就用stream_socket_accept进行通讯

}

*/

//设置不超时.服务端当然不能超时

$port = 8001;

* @copyright 马永占(MyZ)

if (!$fp) return 不能打开到$url[host]的连接;

function virtualPost($url, $data) {

* php 发送POST请求

$inheader = 0;

while(!feof($fp)) {

$address = {$xport}://.0:{$port};

//关闭socket

如果是建立的是udp的server
就用stream_socket_recvfrom和stream_socket_sendto进行通讯,而且stream_socket_server中需要加个参数STREAM_SERVER_BIND

$socket = stream_socket_server($address, $errno, $errstr);

* @author 马永占(MyZ)

do {

fsockopen

?

//定义一些东西

//得到可用socket

return $results;

—————————- stream_socket
client—————————

//接受

} while ($pkt !== false);

$socket = stream_socket_server($address, $errno, $errstr,
STREAM_SERVER_BIND);

}

echo $peer ;

?php

* @param string $url 提交到的地址


fputs($fp, sprintf(POST %s%s%s HTTP/1.0 , $url[”path”],
$url[”query”] ? ? : , $url[”query”]));

$peer = stream_socket_get_name($conn,true);

* @name test.php

* @link

$results .= $line;

$url = parse_url($url);

*/

发表评论

电子邮件地址不会被公开。 必填项已用*标注