server:

 <?php
set_time_limit(0); $ip = '127.0.0.1';
$port = 8888; // 1. 创建
if( ($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) == FALSE ){
echo 'create fail:' . socket_strerror(socket_last_error());
} // 2. 绑定
if ( socket_bind($sock, $ip, $port) == FALSE ) {
echo 'bind fail:' . socket_strerror(socket_last_error());
} // 3. 监听
if( socket_listen($sock, 4) == FALSE ){
echo 'listen fail:' . socket_strerror(socket_last_error());
} $count = 0; do{
// 4. 阻塞,等待客户端请求
if ( ($msgsock = socket_accept($sock)) == FALSE ) { echo 'accept fail:' . socket_strerror(socket_last_error()); break;
} else { // 5. 向客户端写入信息
$msg = 'server send successfully!';
socket_write($msgsock, $msg, strlen($msg)); // 5. 读取客户端信息
echo '-----test successfully!------';
$buf = socket_read($msgsock, 8192); $talkback = 'receive client: ' . $buf;
echo $talkback; if ($count >= 5) {
break;
}
} // 6. 关闭socket
socket_close($msgsock); }while(true); // 6. 关闭socket
socket_close($sock);

client:

<?php
error_reporting(E_ALL);
set_time_limit(0); $ip = '127.0.0.1';
$port = 8888; // 1. 创建
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if( $socket == FALSE ) {
echo 'create fail: ' . socket_strerror(socket_last_error());
} else {
echo 'OK';
} // 2. 链接
echo 'we will try to connect ' . $ip .':' . $port . '\r\n----';
$result = socket_connect($socket, $ip, $port);
if ( $result == FALSE) { } $in = 'HO ';
$in .= 'first blood--------';
$out = ''; // 3. 向服务端写入
if( !socket_write($socket, $in, strlen($in)) ) {
echo 'write fail: ' . socket_strerror(socket_last_error());
} else {
echo '-----send to server succefully! \r\n----';
echo 'the content is ' . $in;
} // 3. 从服务端读取
while ( $out = socket_read($socket, 8129) ) {
echo '-----receive from server succefully!\r\n------';
echo 'the contents is ' . $out;
} // 4. 关闭
echo '----close socket ...';
socket_close($socket);
echo 'closed ok.';

简单的php socket 实例的更多相关文章

  1. 网络编程基础【day09】:简单socket实例(二)

    本节内容 1.概述 2.socket实例 3.总结 一.概述 之前我们只是介绍了soket的概念和一些逻辑图表,下面我们来看看,socket的客户端和服务端到底是怎么用的? 二.socket实例 2. ...

  2. 一个简单的Android小实例

    原文:一个简单的Android小实例 一.配置环境 1.下载intellij idea15 2.安装Android SDK,通过Android SDK管理器安装或卸载Android平台   3.安装J ...

  3. mongodb 简单部署方案及实例

    mongodb 简单部署方案及实例 转载:http://my.oschina.net/zhuzhu0129/blog/53290 第一节 准备工作 一 安装mongodb  我这里选用rehl 5.6 ...

  4. winsock2之最简单的win socket编程

    原文:winsock2之最简单的win socket编程 server.cpp #include <WINSOCK2.H> #include <stdio.h> #pragma ...

  5. 一个简单的jQuery插件开发实例

    两年前写的一个简单的jQuery插件开发实例,还是可以看看的: <script type="text/javascript" src="jquery-1.7.2.m ...

  6. UEditor编辑器和php简单的实现socket通信

    一.UEditor编辑器 使用这个编辑器是需要先下载编辑器文件,记得下载的时候放入自己的网站中,既然是php中使用,自然我下载的就是php的UEditor编辑器了,然后是utf-8的 其实使用很简单, ...

  7. springmvc 项目完整示例01 需求与数据库表设计 简单的springmvc应用实例 web项目

    一个简单的用户登录系统 用户有账号密码,登录ip,登录时间 打开登录页面,输入用户名密码 登录日志,可以记录登陆的时间,登陆的ip 成功登陆了的话,就更新用户的最后登入时间和ip,同时记录一条登录记录 ...

  8. [WCF REST] 一个简单的REST服务实例

    Get:http://www.cnblogs.com/artech/archive/2012/02/04/wcf-rest-sample.html [01] 一个简单的REST服务实例 [02] We ...

  9. PureMVC和Unity3D的UGUI制作一个简单的员工管理系统实例

    前言: 1.关于PureMVC: MVC框架在很多项目当中拥有广泛的应用,很多时候做项目前人开坑开了一半就消失了,后人为了填补各种的坑就遭殃的不得了.嘛,程序猿大家都不喜欢像文案策划一样组织文字写东西 ...

随机推荐

  1. Jenkins安装

    直接下载使用Jenkins有两种方式:一种是下载war包安装.另一种是下载.zip进行安装. 一..zip解压安装 1.下载Jenkins:地址http://mirrors.jenkins-ci.or ...

  2. C#操作XML的通用方法总结

    转载至http://www.cnblogs.com/pengze0902/p/5947997.html 1.创建xml 复制代码 /// <summary> /// 创建XML文档 /// ...

  3. spring mvc 的jpa JpaRepository数据层 访问方式汇总

    本文转载至:http://perfy315.iteye.com/blog/1460226 AppleFramework在数据访问控制层采用了Spring Data作为这一层的解决方案,下面就对Spri ...

  4. IntelliJ IDEA 15,16 win 7 64位安装包以及注册码 百度云盘

    不知道发出来,有用没有,要是官网下载不了的话,可以用我的这个哦,虽然不是最新的. ideaIU-162.1447.21 ideaIU-15.0.2 win7  64系统的安装包 链接:http://p ...

  5. 各种主流浏览器CSS、BUG兼容

    1.div的垂直居中问题 vertical-align:middle;将行距增加到和整个DIV一样高 line-height:200px;然后插入文字,就垂直居中了.缺点是要控制内容不要换行.---- ...

  6. CSS的选择器

    <div id="demo"> <div class="inner"> <p><a href="#" ...

  7. 用Canvas实现动画效果

    1.清除Canvas的内容 clearRect(x,y,width,height)函数用于清除图像中指定矩形区域的内容 <!doctype html> <html> <h ...

  8. mac显示隐藏文件

    苹果Mac OS X操作系统下,隐藏文件是否显示有很多种设置方法,最简单的要算在Mac终端输入命令. 显示/隐藏Mac隐藏文件命令如下(注意其中的空格并且区分大小写): 第一种 显示Mac隐藏文件的命 ...

  9. String StringBuffer StringBuilder

    package com.test; import java.util.Date; /*** * * // 输出的结果是:// 来一个测试// 来一个测试如果只输出这句就证明了String是不可变的// ...

  10. 2.1、Hibernate多表操作--一对多、多对一、多对多。

    一.什么是一对一.一对多.多对一及多对多关系(以简单的学生和老师的关系为例来说): 1.一对一:学生具有学号和姓名(假定没有同名的学生)这两个属性,那么我知道了学生的学号也就能找到对应的学生姓名,如果 ...