php socket 客户端代码

<?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();
时间: 2024-12-30 03:07:13

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

windows socket 简单的服务端和客户端代码

客户端代码 //socket简单的客户端代码 #define WIN32_LEAN_AND_MEAN #define _CRT_SECURE_NO_WARNINGS #define _WINSOCK_DEPRECATED_NO_WARNINGS #include <stdio.h> #include <string.h> #include <Windows.h> #include <WinSock2.h> #pragma comment(lib, "

UDP服务器/客户端代码示例

UDP服务器代码: 1 #include <errno.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #include <sys/types.h> 5 #include <sys/socket.h> 6 #include <netinet/in.h> 7 #include <arpa/inet.h> 8 #include <iostream> 9 10 usi

SFTP客户端代码示例

SFTP客户端代码示例 环境:libssh2 1.4.3.zlib-1.2.8.openssl-1.0.1g Author: Kagula 最后更新日期:2014-5-18 从http://www.libssh2.org/下载libssh2-1.4.3.tar.gz文件,解压后打开libssh2.dsw文件升级项目到VisualStudio 2013,里面有两个项目,只要编译libssh2项目就可以了.编译前需要添加zlib和openssl的头文件和库文件链接位置,如果编译libssh2提示找不

c++ socket 客户端库 socks5 客户端 RudeSocket? Open Source C++ Socket Library

介绍 一个c++ socket 客户端库 http://www.rudeserver.com/socket/index.html The RudeSocket™ Open Source C++ Socket Library provides a simple to use interface for creating and using client sockets. You can connect to the destination server through an unlimited n

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

TCP服务器代码: 1 #include <errno.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #include <sys/types.h> 5 #include <sys/socket.h> 6 #include <netinet/in.h> 7 #include <arpa/inet.h> 8 #include <iostream> 9 10 usi

java socket 客户端和服务端通信

1.采用阻塞式readUTF():长连接 2.java socket的3个主要方面如下 1)accept 阻塞,直到接受到一个连接,并返回一个客户端对象实例 2)getInputStream() 3)getOutputStream() 客户端代码: public class ClientSocket { public static final String IP="10.100.63.18"; public static final int PORT=667; public stati

带线程池的socket客户端与服务端

前言 socket(套接字),Socket和ServerSocket位于java.net包中,之前虽然对socket有过一些了解,但一直都是云里雾里的,特意仔细的学习了一个socket,用socket模拟一个天气查询的功能,并且解决了几个使用socket过程中比较严重的问题. 最简单的客户端和服务端 服务端代码 1 package cn.hucc.socket.server; 2 3 import java.io.DataInputStream; 4 import java.io.DataOut

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

经常有朋友会对php的socket应用充满疑惑,本文就以实例代码作一讲解,希望能对初学php的朋友起到一点帮助作用 具体代码如下: 1.服务器端代码: <?php class SocketServer{ private $_port='9000'; private $_address='127.0.0.1'; private $_client_socket_list=array(); public function __set($name,$val){ $this--->$name=$val;

socket 客户端和服务端通信

客户端要连接服务器:首先要知道服务器的IP地址.而服务器里有很多的应用程序,每一个应用程序对应一个端口号 所以客户端想要与服务器中的某个应用程序进行通信就必须要知道那个应用程序的所在服务器的IP地址,及应用程序所对应的端口号 TCP协议:安全稳定,一般不会发生数据丢失,但是效率低.利用TCP发生数据一般经过3次握手(所有效率低,自己百度三次握手) UDP协议:快速,效率高,但是不稳定,容易发生数据丢失(没有经过三次握手,不管服务器有空没空,信息全往服务器发,所有效率搞,但服务器忙的时候就没办法处