<?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. [OpenCV](1)安装与测试

    1.安装包下载地址:http://opencv.org/downloads.html 2.解压缩到D:\Program Files (x86) 3.添加环境变量:D:\Program Files (x ...

  2. 11G中自动收集统计信息

    在11G中,引入了一个名为 gather_stats_prog 的自动运行任务专用于自动收集统计信息.其对应的客户端名称为"auto optimizer stats collection&q ...

  3. 文字排版一律用plist

    NSMutableArray *newhealthArr = [NSMutableArray new]; NSArray *healthTitleArr = [NSArray arrayWithCon ...

  4. 转:Java环境变量配置

    工具/原料 windows系统 jak安装包 方法/步骤   安装jdk,这个没有的百度就能搜到,不再赘述 首先,右键计算机---属性---高级系统设置---环境变量   建议是都设置系统变量,一般P ...

  5. 弦图的判定MCS算法(zoj1015)

    题意:裸的弦图的判定: 弦图定义:给出一个无向连通图,如果每个环中都存在至少一条弦(环中存在不相邻的两点直接相连)这样的图叫做弦图: 转载:http://blog.csdn.net/crux_d/ar ...

  6. ZOJ 3645 BiliBili(高斯消元)

    Shirai Kuroko is a Senior One student. Almost everyone in Academy City have super powers, and Kuroko ...

  7. Java泛型01--任意数组中两元素交换

    package com.zl.generic; /** * 交换“任意”数组 中两个元素 */ public class GenericSwapArray { public static void m ...

  8. android studio adb

    bogon:platform-tools alamps$ echo $HOME /Users/alamps bogon:platform-tools alamps$ echo $PATH /usr/l ...

  9. paper 66: MATLAB函数—disp的使用

    例子来源于网络:关键是看disp函数怎么把字符和数字在一起进行显示. 两点生成直线程序 %%以下是一个通过给定两点显示直线方程的程序, %%该程序需要给出两个点的坐标,结果返回为y=kx+b的格式,且 ...

  10. EBS R12中重新enable失效用户之后,丢失职责

    以下请求跑完不能立即生效,需要等上一段时间! oracle support说这并不是一个bug,是一个问题,呵呵,bug和问题,都是你的错,oracle! 工 作中将某个用户失效之后,有可能又需要重新 ...