下面是一些简单的例子,在命令行运行php脚本就行

[命令行运行PHP]PHP中有一个php.exe文件,可以用命令执行PHP脚本。如:D:/php.exe -f F:/test.php ; 可以使用php.exe -h查看更多参数 :

服务器端:

<?php

/**

* 服务器端代码

*

*/

//确保在连接客户端时不会超时

set_time_limit(0);

//设置IP和端口号

$address = "localhost";

$port = 1234; //调试的时候,可以多换端口来测试程序!

//创建一个SOCKET

if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false)

{

echo "socket_create() 失败的原因是:" . socket_strerror(socket_last_error()) . "/n";

die;

}

//阻塞模式

if (socket_set_block($sock) == false)

{

echo "socket_set_block() 失败的原因是:" . socket_strerror(socket_last_error()) . "/n";

die;

}

//绑定到socket端口

if (socket_bind($sock, $address, $port) == false)

{

echo "socket_bind() 失败的原因是:" . socket_strerror(socket_last_error()) . "/n";

die;

}

//开始监听

if (socket_listen($sock, 4) == false)

{

echo "socket_listen() 失败的原因是:" . socket_strerror(socket_last_error()) . "/n";

die;

}

do

{

if (($msgsock = socket_accept($sock)) === false)

{

echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error()) . "/n";

die;

}

//发到客户端

$msg = "welcome /n";

if (socket_write($msgsock, $msg, strlen($msg)) === false)

{

echo "socket_write() failed: reason: " . socket_strerror(socket_last_error()) ."/n";

die;

}

echo "读取客户端发来的信息/n";

$buf = socket_read($msgsock, 8192);

echo "收到的信息: $buf   /n";

socket_close($msgsock);

} while (true);

socket_close($sock);

?>

客服端

<?php

/**

* 客户端代码

*/

error_reporting(0);

set_time_limit(0);

echo " TCP/IP Connection /n";

$service_port = 10001;

$address = '127.0.0.1';

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

if ($socket === false)

{

die;

}

else

{

echo "OK";

}

echo "试图连接 ";

if (socket_connect($socket, $address, $service_port) == false)

{

$error = socket_strerror(socket_last_error());

echo "socket_connect() failed./n","Reason: {$error} /n";

die;

}

else

{

echo "连接OK/n";

}

$in   = "Hello World/r/n";

if (socket_write($socket, $in, strlen($in)) === false)

{

echo "socket_write() failed: reason: " . socket_strerror(socket_last_error()) ."/n";

die;

}

else

{

echo "发送到服务器信息成功!/n","发送的内容为: $in  /n";

}

$out  = "";

while ($out = socket_read($socket, 8192))

{

echo "接受的内容为: ".$out;

}

echo "关闭SOCKET…/n";

socket_close($socket);

echo "关闭OK/n";

?>

下面是我自己的代码:这是一个PHP客户端测试程序,目的是与服务器连接,将一个包体中的内容发给服务器,服务器查询数据库,然后将结果返还给客户端

<?                                                                        
$clientfd = socket_create(AF_INET, SOCK_STREAM, 0);
if($clientfd == -1)
{
    printf("failed to create socket!\n");
}

$server_port = 63214;
$server_addr = "10.1.1.65";

if((socket_connect($clientfd, $server_addr, $server_port)) === false)
{
    echo "failed to connect!\n";
    die;
}
else
{
    echo "succeed to connect!\n";
}

$pkg_len = 18;
$cmd_id  = 1;
$user_id =100;

$buf = pack("LLSLL", $pkg_len, 0, $cmd_id, 0, $user_id);
if(socket_write($clientfd, $buf, strlen($buf)) === false)
{
    echo "failed to send!\n";
}
else
{
    echo "succeed to send message to the server!\n";
    if(($result = socket_read($clientfd, 63214)))
    {
        $res = unpack($result);
        echo "succeed to receive data from the server:$server_addr\n";--
        echo "the result is :$res[1]\n";
    }
    else
    {
        echo "failed to receive data from the server:$server_addr\n";

}
}

PHP下socket编程相关推荐

  1. Linux下Socket编程

    Linux下Socket编程    网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符.Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的S ...

  2. windows下socket编程GetLastError()函数返回结果与对照表-转

    原文地址:http://blog.sina.com.cn/s/blog_4880c4bb0100b6a5.html WSAGetLastError()函数返回结果与对照表: Windows Socke ...

  3. 一文了解linux下socket编程

    一文了解linux下socket编程 文章目录 一文了解linux下socket编程 1 网络编程的相关简述 1.1 引言 1.2 Tcp和Udp简介 1.3 TCP三次握手和四次挥手 1.4 网络编 ...

  4. LINUX下Socket编程 函数格式详解

    你需要了解的一些系统调用: socket() bind() connect() listen() accept() send() recv() sendto() recvfrom() close() ...

  5. linux下socket编程读写函数

    linux下socket编程,实现服务器与客户端的通信之后,在同一个虚拟机上,打开两个shell,一个运行服务器程序,一个运行客户端程序,课相互发送数据. 如果使用的是recv接收函数,当关闭客户端或 ...

  6. Windows下Socket编程

    Windows下Socket编程 构架 创建socket 绑定bind 存储转换函数 监听listen 接收accept 发送send(tcp)/sendto(udp) 接收recv(tcp)/rec ...

  7. [zz]Linux 下 socket 编程示例

    本示例为 Client/Server 结构,通过代码演示 Client 如何建立连接,并向远程端发送数据:Server 端如何侦听系统连接请求,接收请求并建立连接,进而获取客户端发来的数据.代码虽短, ...

  8. win32下Socket编程(1)

    一.win32的socket编程,是socket编程中比较经典也比较基础的一部分,根据传输方式和协议的区别,可以简单的分为TCP传递和UDP传递两种.这篇文章主要是阐述基于TCP的Socket编程. ...

  9. linux下socket编程(基础参考)

    什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序.要学Internet上的TCP/IP网络编程, ...

  10. 多线程下SOCKET编程

    SOCKET编程往往离不开多线程,说到多线程,总的说来还是一个比较复杂的东西,尤其是业务逻辑变得复杂的时候,有时候或者说经常,会弄得人头晕脑胀.但是C#,相对好一点,因为微软封装了,帮我们做很多工作, ...

最新文章

  1. 08CSS的复合选择器
  2. 云原生时代,.NET5必将称王!
  3. 用于RIA的JavaFX 2与HTML5
  4. python关键词提取_python对文件中的关键词查找替换,实现自动获取配置
  5. C语言 · 数的读法
  6. apt-get命令_DBATools中的Get-DbaHelpIndex命令
  7. IOSday04 UIButton使用
  8. C语言钩子函数获取键盘事件,(C#)透过键盘钩子获取ScanCode/VkCode
  9. NXP推出Icode DNA芯片,助力产品防伪鉴定
  10. GitHub绑定阿里云域名
  11. P2P流量检测8个方向
  12. IntelliJ IDEA 整理代码格式 快捷键
  13. 阿里2019实习生面经
  14. 100baseT,1000baseX,1000baseTX,1000baseFX分别表示的意思
  15. jBox,实现批量查询
  16. 「读书感悟系列」苏世民:我的经验与教训
  17. Excel插入XactiveX提示出错“不能插入对象”解决
  18. 2021年化工自动化控制仪表考试报名及化工自动化控制仪表新版试题
  19. Django实现邮箱注册系统
  20. vijos 1221 神秘配方 题解

热门文章

  1. mysql 5.1 备份_mysql 5.1备份到5.0 USING BTREE
  2. python 移动文件
  3. android自定义progressbar样式,Android开发中如何实现自定义ProgressBar的样式
  4. import export php,import与export在node.js中的使用方法
  5. Java旅游项目线路收藏_基于JavaWeb的旅游项目--详情功能
  6. java selector 源码_基于selector的源码分析和理解、思想和应用实践
  7. 网课助手浏览器版怎么更新_MIUI版本更新动态:跨屏协作来袭(第57期)
  8. java 之持久化和序列化(反序列化)
  9. ajax在Xss中的利用,XSS高级利用
  10. 了解CUDA计算(一)