php中socket的使用
2012-11-21 15:59
323 查看
一、开启socket
phpinfo();查看是否开启了socket扩展,否则在php.ini中开启。
二、服务器端代码的写法
服务器端需要在cli模式是执行,有可能cli模式下php.ini文件载入的不一样
可以像如下输出
这时候在zhoxh目录下就有个tem.text文件。查看ConfigurationFile(php.ini)Path=>C:\WINDOWS。不是我的php.ini文件,这说明调用的php.ini文件时错误的。这时候我们要指定php.ini文件命令如下
注意的是我的php可以直接执行时配置了环境变量。
三、客户端
client:
phpinfo();查看是否开启了socket扩展,否则在php.ini中开启。
二、服务器端代码的写法
<?php error_reporting(E_ALL); set_time_limit(0); //ob_implicit_flush(); $address='127.0.0.1'; $port=10005; //创建端口 if(($sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP))===false){ echo"socket_create()failed:reason:".socket_strerror(socket_last_error())."\n"; } //绑定 if(socket_bind($sock,$address,$port)===false){ echo"socket_bind()failed:reason:".socket_strerror(socket_last_error($sock))."\n"; } //监听 if(socket_listen($sock,5)===false){ echo"socket_bind()failed:reason:".socket_strerror(socket_last_error($sock))."\n"; } do{ //得到一个链接 if(($msgsock=socket_accept($sock))===false){ echo"socket_accepty()failed:reason:".socket_strerror(socket_last_error($sock))."\n"; break; } //welcome发送到客户端 $msg="<fontcolor='red'>serversend:welcome</font><br/>"; socket_write($msgsock,$msg,strlen($msg)); echo'readclientmessage\n'; $buf=socket_read($msgsock,8192); $talkback="receivedmessage:$buf\n"; echo$talkback; if(false===socket_write($msgsock,$talkback,strlen($talkback))){ echo"socket_write()failedreason:".socket_strerror(socket_last_error($sock))."\n"; }else{ echo'sendsuccess'; } socket_close($msgsock); }while(true); //关闭socket socket_close($sock); ?>
服务器端需要在cli模式是执行,有可能cli模式下php.ini文件载入的不一样
可以像如下输出
这时候在zhoxh目录下就有个tem.text文件。查看ConfigurationFile(php.ini)Path=>C:\WINDOWS。不是我的php.ini文件,这说明调用的php.ini文件时错误的。这时候我们要指定php.ini文件命令如下
注意的是我的php可以直接执行时配置了环境变量。
三、客户端
<?php //error_reporting(E_ALL);echo"<h2>tcp/ipconnection</h2>\n"; $service_port=10005; $address='127.0.0.1'; $ socket=socket_create(AF_INET,SOCK_STREAM,SOL_TCP); if($ socket=== false){ echo"socket_create()failed:reason:".socket_strerror(socket_last_error())."\n"; } else{ echo"OK.\n"; } echo"Attemptingtoconnectto'$address'onport'$service_port'..."; $result=socket_connect($ socket,$address,$service_port); if($result=== false){ echo"socket_connect()failed.\nReason:($result)".socket_strerror(socket_last_error($ socket))."\n"; } else{ echo"OK\n"; } $in="HEAD/http/1.1\r\n"; $in.="HOST:localhost\r\n"; $in.="Connection:close\r\n\r\n"; $out=""; echo"sendinghttpheadrequest..."; socket_write($ socket,$in, strlen($in)); echo"OK\n"; echo"Readingresponse:\n\n"; while($out=socket_read($ socket,8192)){ echo$out; } echo"closeingsocket.."; socket_close($ socket); echo"ok.\n\n";
执行结果:
server:
client:
相关文章推荐
- C#使用SOCKET获取ASPSESSIONID、PHPSESSID等Cookie
- PHP Socket 简单使用
- PHP socket 中 pack 和 unpack 的使用
- 使用php通过Socket进行发信源码,支持发信认证
- 设置php-fpm使用socket文件
- 使用socket方式连接Nginx优化php-fpm性能
- PHP使用socket方式发送邮件,无需SMTP服务
- php使用socket获取远程图片
- PHP Socket编程 之使用fsockopen()函数
- 在php中直接使用socket编程对memcached缓存进行增删改查数据
- 使用socket实现文件传输[PHP CLI]
- nginx和php-fpm 是使用 tcp socket 还是 unix socket ?
- PHP中使用socket方式GET、POST数据实例
- php中使用Curl、socket、file_get_contents三种方法POST提交数据
- php socket简单使用
- php中socket的使用
- PHP Socket(套接字连接)扩展简介和使用方法
- 使用PHP的Socket写的POP3类(一)
- php中socket的使用
- php中使用Curl、socket、file_get_contents三种方法POST提交数据