导航:首页 > 编程语言 > phpsocket开发

phpsocket开发

发布时间:2025-07-03 18:58:09

A. php怎么创建开启socket服务

在PHP中创建和开启socket服务,可以参考以下示例代码。首先,我们需要创建一个socket服务器,这通常通过PHP内置的socket相关函数来实现。这里提供一个简单的示例,帮助理解基本的socket服务搭建过程。

下面是一个基本的PHP socket服务器示例:

php

$address = '127.0.0.1';

$port = 12345;

$backlog = 5;

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

if ($socket === false) {

echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";

}

socket_bind($socket, $address, $port);

if (socket_listen($socket, $backlog) === false) {

echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($socket)) . "\n";

}

echo "Socket server is listening on $address:$port\n";

while (true) {

$client_socket = socket_accept($socket);

if ($client_socket === false) {

echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error($socket)) . "\n";

} else {

$client_address = socket_getpeername($client_socket, $client_port);

echo "Connection from $client_address:$client_port\n";

socket_write($client_socket, "Hello from server\n");

socket_close($client_socket);

}

}

socket_close($socket);

在这个示例中,我们创建了一个TCP socket服务器,监听本地IP地址127.0.0.1的12345端口。服务器接受客户端连接请求,并向每个客户端发送一条欢迎信息。

运行这个示例代码后,你可以使用如下的客户端代码与服务器进行通信:

php

$client_socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

socket_connect($client_socket, '127.0.0.1', 12345);

$response = socket_read($client_socket, 1024);

echo $response;

socket_close($client_socket);

以上示例展示了如何创建一个PHP socket服务器及其客户端。通过这些基础代码,你可以进一步扩展功能,实现更复杂的服务和客户端交互。

B. php可不可以socket通信长连接,不断开,然后实现多次通讯

理论上是可以的,使用PHP提供的socket相关API,主要问题是脚本执行时间。

PHP运行模式分为非命令行模式及命令行模式。
非命令行模式一般是用于B/S交互,max_execution_time默认为非零,也就是限制脚本执行时间。即使你设置max_execution_time为0也面临用户浏览器请求的超时问题。
命令行模式下set_limit_time默认为0,做为本地脚本执行,所以没有上述的问题。

PHP SOCKET相关文档:
http://cn2.php.net/manual/zh/book.sockets.php

C. php涓轰粈涔堜笉阃傚悎socket


浣滀负涓钖嶉潪搴曞眰绋嫔簭锻桡纴瑕佹兂娣卞叆浜呜Вsocket镄勫唴閮ㄥ疄鐜版満鍒舵槸寰埚汹闅剧殑锛屾垜浠鍙闇鏄庣槠socket鏄涓濂楁搷浣灭郴缁熷皝瑁呭ソ镄勫疄鐜拌繘绋嬮氢俊镄勫嚱鏁帮纴浼氩垱寤哄拰璋幂敤灏卞熶简銆

PHP镄勮瑷鐗规у拰镊韬瀹氢綅鍐冲畾浜嗗畠鍙阃傚悎锅歴ocket瀹㈡埛绔锛岃屼笉阃傚悎锅歴ocket链嶅姟鍣ㄧ銆
锲犱负socket涓昏侀溃钖戝簳灞傚拰缃戠粶链嶅姟寮鍙戯纴涓鑸链嶅姟鍣ㄧ閮芥槸鐢 C 鎴 Java 绛夎瑷瀹炵幇锛岃繖镙疯兘镟村ソ鍦版搷浣滃簳灞傦纴瀵圭绣缁沧湇锷″紑鍙戜腑阆囧埌镄勯梾棰桡纸濡傚苟鍙戙侀樆濉炵瓑锛変篃链夋垚镡熷畬锽勭殑瑙e喅鏂规堬纴钥孭HP鏄剧劧涓嶉傚悎杩欑嶅簲鐢ㄥ満鏅銆 锛堟帹钻愬︿範锛歅HP瑙嗛戞暀绋嬶级
瀹为檯涓婏纴PHP镎崭綔MySQL鏁版嵁搴扑篃鏄阃氲繃socket杩涜岀殑锛岃繖姝f槸鐢变簬socket灞忚斀浜嗗簳灞傜殑鍗忚锛屼娇寰楃绣缁沧湇锷′箣闂寸殑浜掕仈浜挜氩彉寰楃亩鍗曘

闄や简浼犵粺镄勬湇锷″櫒绔璇瑷瀹炵幇镄剆ocket澶栵纴闅忕潃HTML5镄勬祦琛岋纴娴忚埚櫒瀹㈡埛绔瀹炵幇镄刉ebSocket涔熼愭笎鍏磋捣锛屽逛簬杩欎竴镣瑰煎缑鍏虫敞锛孎lashSocket涔熸槸涓涓涓嶉敊镄勮В鍐虫柟妗堛

瑕佸湪瀹㈡埛绔镎崭綔socket锛屽彲浣跨敤fsockopen銆乻ocket_create 鎴 stream_socket_client 绛夊嚱鏁板疄鐜帮纴濡傛灉鏄疨HP5锛屾帹钻愪娇鐢╯tream_socket_client銆

socket浜や簰搴旂敤瀹炰緥锛氢娇鐢╯ocket鎻愪氦琛ㄥ崟

鏂板缓涓涓 test.php 鏂囦欢锛屽悜 http://demo.com/index.php?id=1 鎻愪氦琛ㄥ崟鏁版嵁锛屼唬镰佸备笅锛
<?php
$data = array('comment'=>'this is a robot comment');
$data = http_build_query($data);

$out = "POST http://demo.com/index.php?id=1 HTTP/1.1 "; // 阃氲繃POST鏂瑰纺鍙戦佹暟鎹
$out .= "Host: demo.com ";
$out .= "Content-type: application/x-www-form-urlencoded; charset=UTF-8 ";
$out .= "Content-length: ".strlen($data)." ";
$out .= "User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:48.0) Gecko/20100101 Firefox/48.0"." ";
$out .= "Connection: close"." "." "; // 娉ㄦ剰锛氭ゅ勬湁涓や釜

$out .= $data." "; // 姝f枃鏁版嵁

$fp = fsockopen("demo.com", 80, $errno, $errstr, 30); // 鍒涘缓socket瀹㈡埛绔杩炴帴

// $fp = stream_socket_client("tcp://demo.com:80", $errno, $errstr, 30); 鎺ㄨ崘杩欑嶅啓娉

fwrite($fp, $out); // 钖戞湇锷″櫒鍙戦佹暟鎹

while (!feof($fp)) {
echo fgets($fp, 1280); // 璇诲彇链嶅姟鍣ㄥ搷搴旂殑鏁版嵁
}
fclose($fp); // 鍏抽棴socket杩炴帴
?>闇瑕佹敞镒忎互涓嫔嚑镣癸细
fsockopen镄勭涓涓鍙傛暟锛屼篃鍙浠ヤ娇鐢↖P鍦板潃锛屼笉瑕佸甫 http:// 瀛楃︿覆锛岄櫎闱炰娇鐢⊿SL绛
璇锋眰澶达纸headers锛変笉涓瀹氲佸甫涓婃墍链夌殑澶村烟锛屼竴鑸鍙闇甯︿笂鍑犱釜镙稿绩镄删eader鍗冲彲
鍦ㄦ渶钖庝竴涓猦eader澶勶纴鍗 Connection 钖庢湁涓や釜鎹㈣
娉ㄦ剰缂栫爜闂棰

D. 请教php大神,php如何实现点击页面上的一个按钮发送socket的tcp数据

1.参考资料

socket_create()函数需要三个参数:一个协议、一个socket类型、一个公共协议。socket_create()函数运行成功返回一个

包含socket的资源类型,如果没有成功则返回false。

Socket函数
函数名 描述
函数名 描述
socket_accept() 接受一个Socket连接
socket_bind() 把socket绑定在一个IP地址和端口上
socket_clear_error() 清除socket的错误或最后的错误代码
socket_close() 关闭一个socket资源
socket_connect() 开始一个socket连接
socket_create_listen() 在指定端口打开一个socket监听
socket_create_pair() 产生一对没有差别的socket到一个数组里
socket_create() 产生一个socket,相当于产生一个socket的数据结构
socket_get_option() 获取socket选项
socket_getpeername() 获取远程类似主机的ip地址
socket_getsockname() 获取本地socket的ip地址
socket_iovec_add() 添加一个新的向量到一个分散/聚合的数组
socket_iovec_alloc() 这个函数创建一个能够发送接收读写的iovec数据结构
socket_iovec_delete() 删除一个已分配的iovec
socket_iovec_fetch() 返回指定的iovec资源的数据
socket_iovec_free() 释放一个iovec资源
socket_iovec_set() 设置iovec的数据新值
socket_last_error() 获取当前socket的最后错误代码
socket_listen() 监听由指定socket的所有连接
socket_read() 读取指定长度的数据
socket_readv() 读取从分散/聚合数组过来的数据
socket_recv() 从socket里结束数据到缓存
socket_recvfrom() 接受数据从指定的socket,如果没有指定则默认当前socket
socket_recvmsg() 从iovec里接受消息
socket_select() 多路选择
socket_send() 这个函数发送数据到已连接的socket
socket_sendmsg() 发送消息到socket
socket_sendto() 发送消息到指定地址的socket
socket_set_block() 在socket里设置为块模式
socket_set_nonblock() socket里设置为非块模式
socket_set_option() 设置socket选项
socket_shutdown() 这个函数允许你关闭读、写、或指定的socket
socket_strerror() 返回指定错误号的周详错误
socket_write() 写数据到socket缓存
socket_writev() 写数据到分散/聚合数组

2.代码:

<?php
$sendStr='30323034033033';//16进制数据
$sendStrArray=str_split(str_replace('','',$sendStr),2);//将16进制数据转换成两个一组的数组
$socket=socket_create(AF_INET,SOCK_STREAM,getprotobyname("tcp"));//创建Socket
if(socket_connect($socket,"192.168.1.100",8080)){//连接
for($j=0;$j<count($sendStrArray);$j++){
socket_write($socket,chr(hexdec($sendStrArray[$j])));//逐组数据发送
}
$receiveStr="";
$receiveStr=socket_read($socket,1024,PHP_BINARY_READ);//采用2进制方式接收数据
$receiveStrHex=bin2hex($receiveStr);//将2进制数据转换成16进制
echo"client:".$receiveStrHex;
}
socket_close($socket);//关闭Socket
?>
阅读全文

与phpsocket开发相关的资料

热点内容
数据和算法的区别 浏览:459
单片机实现无线通信 浏览:556
往复压缩机气阀工作原理 浏览:264
怎么把安卓微信记录转移到ios 浏览:790
程序员编程用电脑 浏览:545
ios点开文件夹背景不透明了 浏览:667
python中如何创建一个文件夹 浏览:317
android打开scheme 浏览:333
单片机如何撤销中断请求指标 浏览:666
滴滴加油怎么在ApP打发票 浏览:21
数据库文件夹权限设置 浏览:780
保定哪里能办理车辆解压 浏览:356
怎么打开解压图片文件 浏览:140
语声直播源码大全 浏览:226
程序员第一次做蛋炒饭 浏览:635
服务器云路由 浏览:148
开发什么app最好 浏览:483
linux调用c静态库 浏览:719
公司核心程序员离职 浏览:194
webspherelinux下载 浏览:73