门禁系统socket通讯编程
最近遇到一个socke udp协议通讯的需求,而且是16进制数据接收。这样在传输参数的时候老是提示参数错误,因为计算机是不能直接传输16进制的,会自行转换,所有以下代码非常完美的解决我的问题,同时也让我认识到并不是所有socket都是需要一个客户端和服务端代码
- <?php
- $sendStr = '01 49 03 01 01 00 4B'; // 16进制数据01 49 03 01 01 00 4B
- $sendStrArray = str_split(str_replace(' ', '', $sendStr), 2); // 将16进制数据转换成两个一组的数组
- $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
- // $socket = socket_create(AF_INET, SOCK_STREAM, getprotobyname("udp")); // 创建Socket
- if (socket_connect($socket, "192.168.16.254", 8080)) { //连接
- for ($j = 0; $j < count($sendStrArray); $j++) {
- socket_write($socket, chr(hexdec($sendStrArray[$j]))); // 逐组数据发送
- }
- $receiveStr = "";
- $receiveStr = socket_read($socket, 1024, PHP_BINARY_READ); // 采用2进制方式接收数据
- $receiveStrHex = bin2hex($receiveStr); // 将2进制数据转换成16进制
- echo "client:" . $receiveStrHex;
- }
- socket_close($socket); // 关闭Socket
- ?>
运行文件返回如图所示
以下是两个文件的通讯案例,分别是udp_s.php和udp_c.php分别是服务端和客户端
udp_s.php文件
- <?php
- error_reporting( E_ALL );
- set_time_limit( 0 );
- ob_implicit_flush();
- $socket = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP );
- if ( $socket === false ) {
- echo "socket_create() failed:reason:" . socket_strerror( socket_last_error() ) . "\n";
- }
- $ok = socket_bind( $socket, '127.0.0.1', 8080 );
- if ( $ok === false ) {
- echo "socket_bind() failed:reason:" . socket_strerror( socket_last_error( $socket ) );
- }
- while ( true ) {
- $from = "";
- $port = 0;
- socket_recvfrom( $socket, $buf,1024, 0, $from, $port );
- echo $buf;
- usleep( 1000 );
- }
udp_c.php文件
- <?php
- $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
- $msg = "hello";
- $len = strlen($msg);
- socket_sendto($sock, $msg, $len, 0, '127.0.0.1', 8080);
- socket_close($sock);
运行文件如下,没刷新下udp_test.php文件,cmd打印出一个hello
门禁系统socket通讯编程的更多相关文章
- Java 并发专题 : CyclicBarrier 打造一个安全的门禁系统
继续并发专题~ 这次介绍CyclicBarrier:看一眼API的注释: /** * A synchronization aid that allows a set of threads to all ...
- CCF系列之门禁系统(201412-1)
试题编号:201412-1试题名称:门禁系统时间限制: 2.0s内存限制: 256.0MB 问题描述 涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况.每位读者有一个编号,每条记录用读者的 ...
- CCF CSP 201412-1 门禁系统
题目链接:http://118.190.20.162/view.page?gpid=T21 问题描述 试题编号: 201412-1 试题名称: 门禁系统 时间限制: 1.0s 内存限制: 256.0M ...
- 利用Teensy进行em410x卡模拟以及暴力破解em410x类门禁系统
什么是低频?什么是EM410x? 首先,我不得不再次提一下那些工作在125khz频率下的低频卡(如:EM410X之类的),以便大家更好的阅读以下的内容. 什么是低频?以下就是低频的解释: 低频(LF, ...
- CCF201412-1 门禁系统
试题编号: 201412-1 试题名称: 门禁系统 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况.每位读者有一个 ...
- ch1_6_6求解门禁系统问题
import java.util.HashMap; import java.util.Scanner; public class ch1_6_6求解门禁系统问题 { public static voi ...
- 基于51,人体红外感应和RC522的门禁系统
总结一下最近学的东西,这两天学的东西,rfid门卡系统终于弄出来来了,这个程序算现在写过的比较满意的程序,大家可以参考参考 主函数: #include<reg52.h> #include& ...
- 初识Socket通讯编程(一)
一.什么是socket? 当两台计算机需要通信的时候,往往我们使用的都是TCP去实现的,但是并不会直接去操作TCP协议,通常是通过Socket进行tcp通信.Socket是操作系统提供给开发者的一个接 ...
- linux系统socket通信编程实践
简单介绍并实现了基于UDP(TCP)的windows(UNIX下流程基本一致)下的服务端和客户端的程序,本文继续探讨关于UDP编程的一些细节. 下图是一个简单的UDP客户/服务器模型: 我在这里也实现 ...
随机推荐
- 《DSP using MATLAB》Problem 3.17
用差分方程两边进行z变换,再变量带换得到频率响应函数(或转移函数,即LTI系统脉冲响应的DTFT). 代码: %% ------------------------------------------ ...
- adnanh webhook 框架execute-command 以及参数传递处理
adnanh webhook是一个很不错的webhook 实现,方便灵活. adnanh webhook 支持以下功能: 接收请求 解析header 以及负载以及查询变量 规则检查 执行命令 下面 ...
- 【jmeter】jmeter之-聚合点
集合点:简单来理解一下,虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存在的,为了更真实的实现并发这感念,我们可以在需要压力的地方设置集合点, 还拿那个用户和密码的地方,每到输入用户 ...
- ES之八:elasticsearch2.x下的JAVA API示例
D:\soft\elasticsearch\elasticsearch-2.1.0\lib package com.dxz.es; import java.net.InetAddress; impor ...
- TMOD
1. • tag/itemlist {{Syntax Error}} Debug info: Unexpected token else Waiting... Debug info: node D:/ ...
- [转]NSIS:常量大全
原文链接 http://www.flighty.cn/html/bushu/20140915_251.html ;轻狂志www.flighty.cn ;运行后会在桌面生成NSIS常量大全.txt文件 ...
- shell_sctipts: 删除mysql备份到最后7日
目前,mysql的备份文件,经过一周左右清理,手动清理会比较费事,所以写了一个简单脚本来实现. 前提介绍: mysql备份文件放在/usr/bak/sql里面,sql文件的备份名称格式为: mysql ...
- python selenium-2 定位元素
元素 方法 示例 id find_element_by_id('su') driver.get("http://www.baidu.com")driver.find_element ...
- 从Tomcat无法正常关闭讲讲Java线程关闭问题【转载】
正常情况下,会优先采用catalina.sh stop来停止Tomcat实例,这样可以让服务有机会处理完请求,并做好善后工作. 但如果通过catalina.sh stop命令无法关闭Tomcat实例, ...
- matplot 代码实例
matplot 代码实例 #!/usr/bin/env python # coding=utf-8 import numpy as np import matplotlib.pyplot as plt ...