设为首页 - 加入收藏 - 网站地图 欢迎加QQ群 :14364084
当前位置:谭博的博客 > 编程语言 > php > 正文

php使用原生socket函数通信

时间:2013-03-04 15:16 来源:谭博的博客 标签:socket_create socket_set_option socket_connect 作者:谭博 阅读:

 php默认是不支持高级SOCKET的,只支持被"封装"的fsockopen等几个函数。SOCKET作为PHP的扩展,需要设置一下才能使其支持。在WINDOWS需要设置php.ini,在PHP。INI找;视窗系统 Extensions这一行,去掉;extension=php_sockets.dll 前面的分号。

使用原生socket连接

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);//使用TCP协议,数据流模式,IPv4
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO,array("sec"=>3, "usec"=>0));//接受超时
socket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO,array("sec"=>2, "usec"=>0));//发送超时
$r = socket_connect($socket, $host, $port);

if(!$r){
	$err = socket_strerror(socket_last_error()); 
	return false;
}

socket_write($socket,$param,strlen($param); //write socket

$str = trim(socket_read($socket,1024)); //read socket

socket_close($sock); //Close socket

 

使用封装后的fsockopen连接的用法

$fd = @fsockopen ($ip, $port, $errno, $errstr, 3);
if (!$fd) {
    return false;//Failed to connect to socket service
}
$len = strlen ($json);
$ret2 = fwrite ($fd, $json, $len);

if($receive_return == true) {//接收sockect数据
    $result = fread ($fd, 1024);	
}
fclose ($fd);

 

相关文章 :使用sockect,fsockopen伪造IP头信息



 

 

关注微信公众号

微信扫一扫,打赏我

热评文章
    内容不错,支持一下
    评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)