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

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

服务端:

<?php
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);
?>

客户端:

<?php
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++程序交互,客户端:

#include <WinSock2.h>
#include <IOSTREAM>
#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"<<endl; SOCKET sock = WSASocket(AF_INET,SOCK_STREAM,0,NULL,0,WSA_FLAG_OVERLAPPED); if (sock != INVALID_SOCKET) { cout<<"create socket success"<<endl; SOCKADDR_IN addr; addr.sin_addr.S_un.S_addr=inet_addr("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:"<<WSAGetLastError()<<endl; closesocket(sock); WSACleanup(); return -1; } cout<<"connection success"<<endl; char sendBuf[1024]={0}; char recvBuf[1024]={0}; recv(sock,recvBuf,1024,0); cout<<recvBuf<<endl; while (TRUE) { cout<<"Please input data:"<<endl; cin>>sendBuf; if (sendBuf==NULL) { break; } send(sock,sendBuf,strlen(sendBuf),0); Sleep(500); recv(sock,recvBuf,1024,0); cout<<recvBuf<<endl; if (!strcmp(recvBuf,"bye")) { cout<<"connection over"<<endl; break; } Sleep(500); } closesocket(sock); WSACleanup(); }  else { cout<<"create socket failed"<<endl; WSACleanup(); } } else { cout<<"inital socket failed"<<endl; } 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 socket编程实例相关推荐

  1. Socket编程实例

    2019独角兽企业重金招聘Python工程师标准>>> Java具有非常强大的网络应用开发能力.学习网络编程,估计都是从编写一个socket通信开始,从中慢慢掌握网络编程的一点点知识 ...

  2. C语言 socket编程实例

    C语言 socket编程实例 一. 面向连接的流式套接字 C/S 例子 二. 非阻塞的多人聊天服务器端例子 三. 简单的 IPv6 UDP socket编程 四.使用wireshark抓包分析tcp协 ...

  3. android c++ socket编程,C++ 中 socket编程实例详解

    C++ 中 socket编程实例详解 sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW):基于TCP的soc ...

  4. NIO Socket编程实例

    1.阻塞模式实例 NIOUtil类,用来通过SOcket获取BufferedReader和PrintWriter. package IO;import java.io.BufferedReader; ...

  5. JAVA socket编程实例 转载

    事实上网络编程简单的理解就是两台计算机相互通讯数据而已.对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了.Java SDK提供一些相对简单的Api来完成这些工作.Socket ...

  6. JAVA socket编程实例

    2019独角兽企业重金招聘Python工程师标准>>> 事实上网络编程简单的理解就是两台计算机相互通讯数据而已.对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的 ...

  7. socket编程实例_NIO之网络编程源码阅读

    之前分析了ByteBuffer.Channel相关的基本知识,现在对于NIO的基石已经有了基本的了解.不过NIO最突出的特性还是其基于select编程模型的网络编程体验. NIO网络编程通常有两种使用 ...

  8. LiteOS通信模组教程05-LiteOS的SAL及socket编程实例

    1. SAL套接字抽象层 SAL全称Socket Abstract Layer,即套接字抽象层,主要作用是对上层应用提供一层统一的 socket 编程接口,屏蔽底层网络硬件的差异. LiteOS的SA ...

  9. tcp java实例_实现了基于TCP的Java Socket编程实例代码

    实现了基于TCP的Java Socket编程,功能很简单:客户端向服务器端输出一名话"connect",服务器端接收输出到控制台并向客户端输出一名话"Hello" ...

最新文章

  1. android studio数据库存储数据,如何使用API​​ 23在android studio中的数据库中存储数据?...
  2. 湘潭大学计算机科学与技术录取分数线,2016年湘潭大学计算机科学与技术专业在湖南录取分数线...
  3. python turtle画彩虹-python绘制樱花,彩虹旋等
  4. python实现简单的api接口-Python实现简单的API接口
  5. git入门:概念、原理、使用
  6. 32GSSD组建RAID0后对硬盘的加速效果
  7. 2017-2018-1 20155227 《信息安全系统设计基础》第十三周学习总结
  8. 查看linux上卸载mysql数据库_linux卸载mysql数据库
  9. MySQL的安装、启动、停止、卸载
  10. mysql 驱动包 mysql-connect-java
  11. SQL分页查询,SQL的LIMIT语句用法,SQL如何实现分页查询,SpringBoot实现分页查询。
  12. JMeter下载及安装详细教程
  13. 西门子g120变频器接线图_西门子G120变频器通过IOP-2面板快速启动
  14. VLAN_Trank使用
  15. 根据标注点坐标范围计算显示缩放级别zoom自适应显示地图
  16. 北京交警二环路机动车道“瘦身”,最高“礼遇”骑行人
  17. Matlab版本对应CUDA
  18. 单反相机照片用python 脚本添加gps位置信息
  19. cad-pol:正多边形命令学习
  20. 人工智能人才缺口达500万,北京大学、天津大学、复旦大学、深圳大学等多所高校布局人工智能人才培养

热门文章

  1. 阿里P8大能倾力编撰的“Java 进阶面试手册”,助力跳槽外包毕业生秋招收获大厂offer
  2. JavaScript 常用的转义字符
  3. 【源码解析】Activity之setResult工作原理
  4. 对封装继承多态内涵的理解
  5. 【无线通信】Rayleigh fading和Rician fading
  6. C_一文读懂推荐系统知识体系(数据派THU 李中杰)
  7. xml文件不能正常打开
  8. 间谍软件“飞马”监视超 50 个国家手机用户
  9. Ubuntu14.04安装火狐浏览器中国版(firefox)实现书签同步
  10. 【leetcode】1046.有一堆石头,每块石头的重量都是正整数