標籤

BAT (38) shell (34) Virtual Machine (33) Xubuntu (29) acfs (25) PHP (24) CentOS (21) Virtul Box (20) 編輯器 (17) 資料庫 (15) lubuntu (13) windows (13) CPP (12) ubuntu (12) chrome (11) laravel (10) Docker (9) Python (9) 5A88 (7) VMware (6) 資料結構 (6) Javascript (5) Node (5) Proxmox VE (5) 公告系統 (5) 程式積木 (5) Android Studio (4) ANN (3) OB2D2016x64 (3) Xoops (3) clonezilla (3) samba (3) 公文 (3) 其他 (3) 硬體 (3) API (2) Android (2) AppInvent2 (2) Html (2) Hyper-V (2) Nas (2) botnet (2) mbot (2) swift (2) wordpress (2) 樣板 (2) 防火牆 (2) AD的應用 (1) Ansible (1) Arduino (1) CSS (1) GitLab (1) HA Proxy (1) LegoEV3 (1) PowerShell (1) Scratch (1) VM (1) XenServer (1) kotlin (1) linuxmint (1) lxc (1)

2019年4月20日 星期六

php socket 修正 Server 與 Client 實作 (一)

目的:
1.Server端:能接收client傳來的訊息並寫入檔案且不傳訊息給client
2.Client端:不接收server傳來的訊息

Server端IP:192.168.32.102 Port:25001
檔名:ServerSocket.php ,檔案所在位置為 /home/webadmin/ServerSocket.php

<?php
$server_ip = '192.168.32.102';
$port = 25001;
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
socket_bind($socket,$server_ip,$port);
socket_listen($socket,SOMAXCONN);
$count = 0;
do {
    $msgsocket = socket_accept($socket);
    if ($msgsocket < 0) {
        echo "socket_accept() fail : ".socket_strerror(socket_last_error())."\n";
        break;
    } else {
        $datetime = date('Y-m-d H:i:s',time());
        $str = "Server datetime:{$datetime}\n";
        $buff = socket_read($msgsocket,2048);
        $str .= "Receive client message: {$buff}"." count: ".$count."\n\n";
        echo $str;
        $str01 = $buff." ".$datetime."\n";
        if ($str01!="") {
            $file = fopen("/home/webadmin/html/ServerSocket", "a+");
            fwrite($file, $str01);
            fclose($file);
        }
    }
    $count++;
    socket_close($msgsocket);
} while ($count <= 5);
socket_close($socket);
?>
執行 ServerSocket.php 的指令
$php ServerSocket.php

Client端:IP:192.168.32.182
檔名:client.php
傳送$in 的內容給 Server 端

<?php
$server_ip = '192.168.32.102';
$port = 25001;
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
socket_connect($socket,$server_ip,$port);
$in = "\$\$H167,864292040653451,AAA,35\n";
socket_write($socket,$in,strlen($in));
socket_close($socket);
?>
執行client.php的指令
$php client.php

另外,在Server端的/home/webadmin/html/ 會出現一個檔案為ServerSocket
其內容為

資料來源:
1.php socket 初步實作Server 與 Client
2.[PHP]開啟及寫入檔案

沒有留言:

張貼留言

在 Windows 10 x64 1909版,使用BAT快速安裝公文系統與人事服務網(自然人憑證)版

相關內容移往 https://skjhcreator.blogspot.com/2021/02/windows-10-x64-1909bat.html