centos下php socket连接

最近要做一个基于tcp/ip下的短连接

我们自己的代码使用的是php的socket连接,对方服务器,已经测试能够连接,并接收到对方传回来的数据;

现在要求我们自己也需要搭建一个socket服务器,要求对方也可以连接我们服务器,获取相关数据。

以前没有做个socket连接,刚刚接触

服务器也已经设置了一个端口好,可以telnet访问

看网络很多关于socket的php介绍,一些例子也使用了,服务器端的文件,总是不能被访问返回数据

有朋友做个这方面的吗?

帮忙一下

怎么写服务器端文件,怎么实时监听到该socket端口有socket请求,并返回数据个对方

谢谢了

------解决方案--------------------

是的,端口被打开了就不能复用

所以通讯时需要先打开一个周知的端口,一旦监听到该端口有信息时

就需要打开一个空闲端口,并将该端口通知对方,用于后续的通讯

服务方的主监听程序需要常驻内存,只能启动一次

通讯是通过子进程进行的

需要注意的是:php 适合做客户端,而不适合做服务端

可能以后更高的版本会有所改变,至少在php5.5也还是没有改变(虽然已经列入开发计划)

------解决方案--------------------

如果你需要xml进行通信的话,webservice就是最好的选择。你可以了解一下webservice,比如soap。你只要开放webservice对方调用就可以,而且对方可以是任何语言或程序。

------解决方案--------------------

楼主要的东西其实就是RPC,我有一个,你可以直接拿去用,

https://github.com/walkor/workerman

开发文档在:http://www.workerman.net/documentation

安装部署开发都非常方便。

如果有啥不明白,可以随时联系我

------解决方案--------------------

//server.php

set_time_limit(0);

// Set up our socket

$commonProtocol = getprotobyname("tcp");

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

socket_bind($socket, '192.168.10.224', 50004);

socket_listen($socket,5);

// Initialize the buffer

$buffer = "";

while(true)

{

$run=file_get_contents("./run.txt");

if($run==0)break;

// Accept any connections coming in on this socket

$connection = socket_accept($socket);

printf("Socket 链接中\r\n");

// Check to see if there is anything in the buffer

if($buffer != "")

{

printf("写入开始 缓冲区内容发送..\r\n");

socket_write($connection, $buffer . "\r\n");

printf("写入结束 \r\n");

}

else

{

printf("缓冲区无数据\r\n");

}

// Get the input socket_read($connection, 1024)

while($data = socket_read($connection, 4096))

{

if($run==0)break;

$buffer = $data;

//写入客户端数据

file_put_contents("./txt.txt", json_encode($data)."\n",FILE_APPEND);

socket_write($connection, "Information Received\r\n");

printf("读结束 缓冲区内容: " . $buffer . "\r\n");

}

socket_close($connection);

printf("关闭 socket\r\n\r\n");

}

//命令行里 输入: php server.php

//client.php 直接浏览器访问

$stime = microtime(true);

$fp = stream_socket_client("tcp://192.168.10.224:50004", $errno, $errstr, 30,STREAM_CLIENT_CONNECT

------解决方案--------------------

STREAM_CLIENT_PERSISTENT);

if (!$fp) {

echo "$errstr ($errno)

\n";

} else {

fwrite($fp,$msg,mb_strlen($msg));

echo fread($fp, 4096)."\n";

fclose($fp);

}

$etime = microtime(true);

echo "Time: " . ($etime - $stime) . "n";

//我目前杀掉占用端口太麻烦,直接用文件控制退出 。run.txt 文件存 0或1 本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网

centos php 开启socket,centos下phpsocket连接,该如何解决相关推荐

  1. centos php 开启socket,CentOS 配置PHP支持socket扩展

    php有很多扩展功能,我们在初次安装的时候并没有安装某些扩展,可能在使用的过程中,又需要用到这些扩展.php提供了一个phpize工具供我们安装需要的扩展. 下面以安装socket扩展来介绍phpiz ...

  2. linux下adb连接不上解决方法

    linux下adb连接不上解决方法 参考文章: (1)linux下adb连接不上解决方法 (2)https://www.cnblogs.com/asin-huang/p/8604368.html 备忘 ...

  3. centos php 开启libgdgd_CentOS6.6下yum安装PHP的gd库失败?-问答-阿里云开发者社区-阿里云...

    CentOS6.6下yum安装PHP默认版本5.3的,为了安装高一点的PHP版本,使用自定义的yum源:remi源,启用remi-php56,安装php-gd扩展的时候报错: Error: Packa ...

  4. centos mysql无法启动 sock_linux下mysql无法启动的解决方法

    启动mysql 报错: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/m ...

  5. wlan连接的笔记本电脑+开启移动热点+手机无法连接【已解决】

    前言: 首先我的问题是: Win10系统,开启移动热点后在手机界面可以搜索到热点,但就是连接不上!不提示"拒绝接入",不提示密码错误! 注释: 在尝试各种方法时,涉及到更改电脑设置 ...

  6. 7 centos ssh 单机_虚拟机下CentOS7 开启SSH连接

    在虚拟机(Vmware Workstation)下,安装了CentOS7,现在想通过SSH工具连接虚拟机中的CentOS7 1.  首先,要确保CentOS7安装了  openssh-server,在 ...

  7. Centos6.8下安装Mysql5.6.14,连接mysql及增删改查,通过Mysql-Front远程连接(开启端口、允许远程连接)

    Centos6.8下安装Mysql5.6.14,连接mysql及增删改查,并能通过Mysql-Front远程连接(开启端口.允许远程连接) 概述: 通过源代码安装高版本的5.6.14. 正文: 一:卸 ...

  8. linux下telnet失败怎么处理,CentOS下telnet退出失败的解决办法

    最近有CentOS用户反映在调试网络程序时出现了问题,服务虽然启动了,但客户端却无法连接上,用telnet连接后发现是Windows防火墙的问题,可是用telnet命令连接成功后发现退不出去了,这该怎 ...

  9. linux 关闭自动升级,开启关闭Centos的自动更新(转)

    开启关闭Centos的自动更新 关闭Centos的自动更新,操作记录如下: [[email protected] alpha]# chkconfig –list yum-updatesd yum-up ...

最新文章

  1. html 动画div右侧消失,使用animate.css时,动画一开始不隐藏,如何解决呢?
  2. Centos5.5下lvs+keepalived集群
  3. JZOJ 5186. 【NOIP2017提高组模拟6.30】tty's home
  4. 自动躲避障碍物,微型蜂鸟机器人靠AI算法飞行
  5. 世界上第一位程序员,竟然是诗人拜伦的女儿?
  6. 各种排序算法比较--2015年7月23日22:33:43v1.0版
  7. NodeSchool: JavaScript函数式编程
  8. Object-c Associated Object
  9. PHP中单引号双引号使用原则
  10. 医院管理系统服务器,医院管理的十大运行系统!
  11. 为啥OpenStack厂商要参加双态运维大会?
  12. Jetson 系列——nvidia jetson nano设置声卡
  13. 博士申请 | 香港大学计算机科学系黄超老师招收2022年入学全奖博士生
  14. 日记侠:如何提高朋友圈活跃度,给你5种实用方法
  15. Prematurely reached end of stream
  16. 从程序员到项目经理(29):怎样写文档
  17. AIGC基础:从VAE到DDPM原理、代码详解
  18. 怎样快速制作GIF动图?教你一分钟在线制作GIF
  19. IAR使用ST-Link下载仿真
  20. java拆分单元格_Java里如何把表格加到分割容器中

热门文章

  1. helm添加仓库命令:helm repo add带用户名密码
  2. k8s argo workflow获取登录token的命令
  3. 【收藏】Hbase2.x协处理器的使用
  4. Ubuntu21.04 Docker 安装
  5. Hadoop命令查看可以访问的queue
  6. 【收藏】在QGIS中导入GOOGLE、BING等地图和卫星影像(插件方式和XYZ方式)
  7. CAS5.3.14安装、配置完全教程
  8. win10使用WSL安装CentOS7
  9. yum安装k8s集群(单master两个node、阿里云镜像源)
  10. docker安装influxdb、grafana及展示数据到grafana