0

0

php socket编程实例

php中文网

php中文网

发布时间:2016-06-06 19:47:28

|

1413人浏览过

|

来源于php中文网

原创

因为用到客户端程序与网页三方支付接口交互,我觉得可以这样来简单实现,在三方支付回调页面中放一个socket服务端,客户端程序与这个socket服务端进行交互,以此来进行最终业务逻辑处理。 php中socket编程,简单实例代码如下: 服务端: ?php set_time_limit

因为用到客户端程序与网页三方支付接口交互,我觉得可以这样来简单实现,在三方支付回调页面中放一个socket服务端,客户端程序与这个socket服务端进行交互,以此来进行最终业务逻辑处理。

php中socket编程,简单实例代码如下:

服务端:

 
set_time_limit(0); 
 
if(!extension_loaded('sockets')){ 
    //die('服务器未加载sockets扩展'); 
    if(strtoupper(substr(PHP_OS, 3)) == “WIN”)  
    {  
        dl(‘php_sockets.dll’); 
    } 
    else 
    { 
        dl(‘sockets.so’);  
    }  
} 
 
$sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP); 
if(!$sock){ 
    die('创建socket失败'); 
} 
 
if(!socket_bind($sock,$_SERVER['SERVER_ADDR'],9394)){ 
    die('socket绑定失败'); 
} 
 
if(!socket_listen($sock)){ 
    die('socket监听失败'); 
} 
 
$client_id = 0; 
do{ 
    //阻塞,直到有客户端连接 
    $connection = socket_accept($sock); 
    ++$client_id; 
    printf("Socket connected-$client_id\n"); 
 
    $buffer='Hello, world!'; 
    socket_write($connection, $buffer . "\n"); 
 
    do{ 
            $buf =socket_read($connection, 1024, PHP_NORMAL_READ); 
            //退出连接条件 
            if($buf=="100\n"){ 
                socket_write($connection, 'bye' . "\n"); 
                break; 
            } 
            echo $buf; 
            socket_write($connection, 'copy that' . "\n"); 
    }while(1); 
 
    socket_close($connection); 
}while(1); 
 
socket_close($sock); 
?> 

客户端:

 
if(!extension_loaded('sockets')){ 
    //die('服务器未加载sockets扩展'); 
    if(strtoupper(substr(PHP_OS, 3)) == “WIN”)  
    {  
        dl(‘php_sockets.dll’); 
    } 
    else 
    { 
        dl(‘sockets.so’);  
    }  
} 
 
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP); 
if(!$socket){ 
    die('创建socket失败'); 
} 
 
$connection = socket_connect($socket,'localhost', 9394); 
 
$send=0; 
do{ 
    $buffer = socket_read($socket, 1024, PHP_NORMAL_READ); 
    //退出连接条件 
    if($buffer=="bye\n"){ 
        break; 
    } 
 
    echo $buffer; 
    ++$send; 
    socket_write($socket, $send . "\n"); 
}while(1); 
 
socket_close($socket); 
?> 

与c++程序交互,客户端:

Simple Groupware0.745
Simple Groupware0.745

Simple Groupware 是一个完整的协同工作套件包。它采用PHP,XML,SQL,HTML,CSS和sgsML开发。Simple Groupware与其它同类型系统不同之处在于使用了新的编程语言sgsML。该语言能够实现快速开发Web应用系统。支持MySQL,Oracle和PostgreSQL。

下载

立即学习PHP免费学习笔记(深入)”;

#include  
#include  
#pragma comment(lib,"ws2_32.lib") 
using namespace std; 
 
int main(int argc, char* argv[]) 
{ 
    WSADATA wsaData; 
    WORD wVersionRequested=MAKEWORD(2,2); 
    int err = WSAStartup(wVersionRequested,&wsaData); 
    if (!err) 
    { 
        cout<<"inital socket success"<0,NULL,0,WSA_FLAG_OVERLAPPED); 
        if (sock != INVALID_SOCKET) 
        { 
            cout<<"create socket success"<"127.0.0.1"); 
            addr.sin_family=AF_INET; 
            addr.sin_port=htons(9394); 
            int errcon = connect(sock,(SOCKADDR*)&addr,sizeof(SOCKADDR)); 
            if (errcon == SOCKET_ERROR) 
            { 
                cout<<"connection failed:"<return -1; 
            } 
            cout<<"connection success"<char sendBuf[1024]={0}; 
            char recvBuf[1024]={0}; 
 
            recv(sock,recvBuf,1024,0); 
            cout<while (TRUE) 
            { 
                cout<<"Please input data:"<>sendBuf; 
                if (sendBuf==NULL) 
                { 
                    break; 
                } 
 
                send(sock,sendBuf,strlen(sendBuf),0); 
                Sleep(500); 
                recv(sock,recvBuf,1024,0); 
                cout<if (!strcmp(recvBuf,"bye")) 
                { 
                    cout<<"connection over"<break; 
                } 
                Sleep(500); 
            } 
            closesocket(sock); 
            WSACleanup(); 
        }  
        else 
        { 
            cout<<"create socket failed"<else 
    { 
        cout<<"inital socket failed"<return 0; 
} 

与c/c++程序交互,php服务端读取数据应该用二进制模式读取:

另外,发送数据时,字符串末尾要加\0:

do{ 
            //$buf =socket_read($connection, 1024, PHP_NORMAL_READ); 
            $buf =socket_read($connection, 1024, PHP_BINARY_READ); 
            //退出连接条件 
            var_dump($buf); 
            if($buf=="quit"){ 
                socket_write($connection, "bye\0"); 
                break; 
            }else if($buf=="isok"){ 
                socket_write($connection, "ok\0"); 
            } 
            echo $buf; 
            socket_write($connection, "copy that\0"); 
    }while(1); 

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

65

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

43

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

35

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

41

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

204

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

9

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

8

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

3

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.2万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号