<?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. iOS - (调用系统本机打电话功能)

    如下图所示,点击订单里的打电话 button 后,调用系统的打电话功能. 这个调用系统打电话功能有点简单,不需要遵守协议和代理什么的,直接在点击方法里写上几句代码就可以了. 下面来看看代码吧: 接下来 ...

  2. arping 通知网关刷新IP

     arping -c 2 -I em1 -s 192.168.110.12  192.168.110.1  

  3. Mysql主从库同步错误:1062 Error 'Duplicate entry '1438019'

    mysql主从库同步错误:1062 Error 'Duplicate entry '1438019' for key 'PRIMARY'' on query mysql主从库在同步时会发生1062 L ...

  4. logistic regression的一些问题,不平衡数据,时间序列,求解惑

    Logistic Regression 1.在有时间序列的特征数据中,怎么运用LR? 不光是LR,其他的模型也是. 有很多基本的模型变形之后,变成带时序的模型.但,个人觉得,这类模型大多不靠谱. 我觉 ...

  5. PostgreSQL Errors and Messages

    使用RAISE语句来报告消息并抛出错误 RAISE [ level ] ’format’ [, expression [, ... ]] [ USING option = expression [, ...

  6. sublime text常用插件

    这个比较重要,不会装插件的时候找了好久 sublime text常用插件 1.插件的安装方法 第一种:用package control 这个是用来管理插件的,必备啊,安装package control ...

  7. TTabControl、TMemo组件(制作一个简单的多文本编辑框)

    TTabControl包含一列字符串标签的tabs 每个标签控制一个对象 首先创建一个TForm;接下来添加TTabControl组件和一个文件对话框TOpenDialog(用于添加文件),然后在TT ...

  8. windows下 mysql忘记密码怎么办

    第一种: 1. 关闭正在运行的MySQL服务. (先查看mysql是否重命名,net start)2. 打开DOS窗口,转到mysql\bin目录. 3. 输入mysqld --skip-grant- ...

  9. 在C#中使用LOG4NET(winform程序

    http://www.csharpwin.com/csharpspace/678.shtml 1.下载log4net (Google log4net) 2.unzip log4net 3.运行VS,新 ...

  10. 夺命雷公狗—angularjs—16—angularjs里面的缓存

    强大的angularjs也给我们预留了一套他的缓存机智,这样在某个程度上来说还是可以做到减轻一点服务器压力的.... <!DOCTYPE html> <html lang=" ...