<?php
class SendDevAction{
//log日志文件
private $logDevFile = "";
//日志字符串
private $logStr = "";
//用于发送接收的socket对象
private $socket;
//socket连接对象
private $connect;
//对方服务器ip
private $host = "211.155.82.229";
//服务器端口
private $port = 14527;
//接收回传字符串长度
private $getStrLength = 16384; function __construct(){
//确定日志文件路径,(自定义)
$this->logDevFile = "Temp/socket_log/" . date("Y-m-d") . "Dev.log"; //创建一个socket,定义相关属性。AF_INET 在socket中定义为常量值为2,SOCK_STREAM常量值为1,SOL_TCP值为6
$this->socket = socket_create ( AF_INET, SOCK_STREAM, SOL_TCP );
//连接对方机器
$this->connect = socket_connect ( $this->socket, $this->host, $this->port ); //第一次握手,如果失败则返回不再执行
$this->firstHandshake();
} //socket第一次握手
function firstHandshake(){
//日志写入本次握手时间,和远程服务器(发送+接收)一次算一次握手
$this->logStr .= "\r\n\r\n".date("Y-m-d H:i:s")."\r\n"; //要发送的字符串
$sendStr = "hello world";
//日志写入发送的字符串
$this->logStr .= $sendStr."\r\n";
//发送字符串
socket_write ( $this->socket, $sendStr, strlen ( $sendStr ) ); //接收
$getStr = socket_read ( $this->socket, $this->getStrLength );
/*
//如果接收字符串过大,可循环多次接收直到接收完整
$getStr = "";
while(true){
$getStr .= socket_read( $this->socket,$this->getStrLength,PHP_BINARY_READ);
//根据回传字符串内容格式判断已接收完全字符串,这里回传字符串以 }] 结尾,并且全文只包含一次 }] 字符串
if(substr_count($getStr, "}]") > 0){
break;
}
}
*/
//日志写入接收完成时间
$this->logStr .= date("Y-m-d H:i:s")."\r\n";
//日志写入接收字符串
$this->logStr .= $getStr."\r\n\r\n"; //将日志内容补充写入日志文件文本的最下面,如无日志文件则生成新日志文件
file_put_contents($this->logDevFile, $this->logStr,FILE_APPEND);
//关闭socket连接
socket_close ( $this->connect );
//关闭socket对象
socket_close ( $this->socket );
}
}
//此socket代码只是发送消息的客户端,不是接收的服务器端,服务器端以后补充
$sendDevAction = new SendDevAction();

php socket 客户端代码的更多相关文章

  1. socket模块实现基于UDP聊天模拟程序;socketserver模块实现服务端 socket客户端代码示例

    socket模块 serSocket.setblocking(False) 设置为非阻塞: #coding=utf-8 from socket import * import time # 用来存储所 ...

  2. SSL握手通信详解及linux下c/c++ SSL Socket代码举例(另附SSL双向认证客户端代码)

    SSL握手通信详解及linux下c/c++ SSL Socket代码举例(另附SSL双向认证客户端代码) 摘自: https://blog.csdn.net/sjin_1314/article/det ...

  3. java版简易socket客户端

    android项目需要使用到心跳, 于是编写了一个简易的socket客户端程序 主要功能是给服务端发送心跳包,保持在线状态 没有使用框架,这样避免了需要引入包,直接使用的阻塞Socket通信. 主要逻 ...

  4. Socket通信代码(原理)

    1.运行环境:NetBeans IDE 6.0.1 2.说明:先运行服务器端,再运行客户端. 3.服务器端代码: 新建java类Test import java.net.*; import java. ...

  5. c++ socket 客户端库 socks5 客户端 RudeSocket™ Open Source C++ Socket Library

    介绍 一个c++ socket 客户端库 http://www.rudeserver.com/socket/index.html The RudeSocket™ Open Source C++ Soc ...

  6. php socket客户端及服务器端应用实例

    经常有朋友会对php的socket应用充满疑惑,本文就以实例代码作一讲解,希望能对初学php的朋友起到一点帮助作用 具体代码如下: 1.服务器端代码: <?php class SocketSer ...

  7. 【RL-TCPnet网络教程】第20章 RL-TCPnet之BSD Socket客户端

    第20章      RL-TCPnet之BSD Socket客户端 本章节为大家讲解RL-TCPnet的BSD Socket,学习本章节前,务必要优先学习第18章的Socket基础知识.有了这些基础知 ...

  8. SFTP客户端代码示例

    参考链接:SFTP客户端代码示例 操作系统:Windows7/8,VS2013 环境:libssh2 1.4.3.zlib-1.2.8.openssl-1.0.1g 原文: “从http://www. ...

  9. TCP服务器/客户端代码示例

    TCP服务器代码: #include <errno.h> #include <string.h> #include <stdlib.h> #include < ...

随机推荐

  1. javascript实例学习之四——javascript分页

    话不多少,直接上代码 html代码: <!DOCTYPE html> <html lang="en"> <head> <meta char ...

  2. Perl Print Win32 Console Windows 控制台 print Unicode 问题

    参考资料: https://stackoverflow.com/questions/15224400/perl-on-windows-problems-with-encoding https://te ...

  3. java中的类和对象

    Java中的类是一个模板,它用于描述一类对象的行为和状态. 对象则是类中的一个实例,对象有状态(属性)和行为(方法).例如一条狗就是一个对象,他的状态就是他的颜色,名字,品种:他的行为就是叫,摇尾巴, ...

  4. iTOP-4412 开发板镜像的烧写

    镜像就是源代码编译并连接以后生成的可执行文件包,把这些镜像文件烧写到开发板的存储芯片里,开机就可以运行了. 烧写方式有两种,通过TF卡烧写以及使用OTG接口烧写 OTG方式:只能在WIN7 或者XP ...

  5. .net 调度器怎么实现心跳(socket除了他,没选择吧)

    自己写调度器,就要从tcp通信入手:心跳的实现除了使用socket,想不到其他任何方案. socket基本使用demo: Socket Client: static void Main(string[ ...

  6. nyist 518 取球游戏

    http://acm.nyist.net/JudgeOnline/problem.php?pid=518 取球游戏 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 今 ...

  7. Java基础(47):插入排序的Java封装(含原理,可运行,哨兵位的理解见VisualGo上面的动态分析)

    直接插入排序(Straight Insertion Sorting)的基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使 ...

  8. 【皇甫】☀那些事儿......STEP

    写项目之前呢,先来缕缕思路,既然要写学生管理系统,那肯定上不了从数据库中读取信息,然而想要从数据库中拿到你想要的东西,就要先登录,得到他的权限才行,所以我们第一步就要先搞出一个登录页面并且能连接到数据 ...

  9. linux挂接U盘

    挂接U盘fdisk -lDisk /dev/sdd: 131 MB, 131072000 bytes/dev/sdd1 * 1 889 127983+ b Win95 FAT32#mkdir -p / ...

  10. sql server 查看数据库编码格式

    user masterselect SERVERPROPERTY(N'edition') as Edition --数据版本,如企业版.开发版等,SERVERPROPERTY(N'collation' ...