Delphi服务端和PHP客户端通过Socket通信  
官方Delphi 学习QQ群: 682628230(三千人)
频道

Delphi服务端和PHP客户端通过Socket通信


PHP代码如下:



<?php

/***************************服务端*******************************/

///**

// * Created by PhpStorm.

// * User: Administrator

// * Date: 2017/1/2 0002

// * Time: 下午 3:54

// */

//

确保在连接客户端时不会超时

//set_time_limit(0);

//

//$ip = '192.168.1.110';

//$port = 1025;

//

///*

// 9  +-------------------------------

//10  *    @socket通信整个过程

//11  +-------------------------------

//12  *    @socket_create

//13  *    @socket_bind

//14  *    @socket_listen

//15  *    @socket_accept

//16  *    @socket_read

//17  *    @socket_write

//18  *    @socket_close

//19  +--------------------------------

//20  */

//

// /*----------------    以下操作都是手册上的    -------------------*/

// if(($sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) < 0) {

//   echo "socket_create() 失败的原因是:".socket_strerror($sock)."\n";

//}

//

// if(($ret = socket_bind($sock,$ip,$port)) < 0) {

//         echo "socket_bind() 失败的原因是:".socket_strerror($ret)."\n";

// }

//

// if(($ret = socket_listen($sock,4)) < 0) {

//        echo "socket_listen() 失败的原因是:".socket_strerror($ret)."\n";

//}

//

// $count = 0;

//

// do {

//        if (($msgsock = socket_accept($sock)) < 0) {

//                 echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";

//        break;

//     } else {

//

//         //发到客户端

//        $msg ="测试成功!\n";

//         socket_write($msgsock, $msg, strlen($msg));

//

//        echo "测试成功了啊\n";

//         $buf = socket_read($msgsock,8192);

//

//

//         $talkback = "收到的信息:$buf\n";

//        echo $talkback;

//

//         if(++$count >= 5){

//                         break;

//         };

//

//

//    }

//     //echo $buf;

//     socket_close($msgsock);

//

// } while (true);

//

//socket_close($sock);

/***************************服务端*******************************/

//?>





<?php

/***************************客户端*******************************/

//error_reporting(E_ALL);

echo "<h2>tcp/ip connection </h2>\n";

$service_port = 1025;

$address = '192.168.1.110';


$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

if ($socket === false) {

    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";

} else {

    echo "OK. \n";

}


echo "Attempting to connect to '$address' on port '$service_port'...";

$result = socket_connect($socket, $address, $service_port);

if($result === false) {

    echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";

} else {

    echo "OK \n";

}

$in="我上线啦!";

$a=mb_convert_encoding($in,"GBK","UTF-8");

//$in = "HEAD / http/1.1\r\n";

//$in .= "HOST: localhost \r\n";

//$in .= "Connection: close\r\n\r\n";

//$out = "";

echo "sending http head request ...";

socket_write($socket, $a, strlen($a));

echo  "OK\n";


echo "Reading response:\n\n";

while ($out = socket_read($socket, 8192)) {

    echo $out;

}

echo "closeing socket..";

socket_close($socket);

echo "ok .\n\n";

/***************************客户端*******************************/



Delphi


设置:


ServerSocket1的Action为True;


ServerSocket1的Port为1025


代码 如下:


unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ComCtrls, ScktComp;



type

  TForm1 = class(TForm)

    ServerSocket1: TServerSocket;

    StatusBar1: TStatusBar;

    Button1: TButton;

    Memo1: TMemo;

    Label4: TLabel;

    procedure ServerSocket1ClientConnect(Sender: TObject;

      Socket: TCustomWinSocket);

    procedure ServerSocket1ClientDisconnect(Sender: TObject;

      Socket: TCustomWinSocket);

    procedure ServerSocket1ClientRead(Sender: TObject;

      Socket: TCustomWinSocket);

    procedure Button1Click(Sender: TObject);



  private

    { Private declarations }

  public

    { Public declarations }

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;

  Socket: TCustomWinSocket);

begin

StatusBar1.SimpleText := 'connect';

end;



procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;

  Socket: TCustomWinSocket);

begin

  StatusBar1.SimpleText := 'disconnect';

end;



procedure TForm1.ServerSocket1ClientRead(Sender: TObject;

  Socket: TCustomWinSocket);

begin

 Memo1.Lines.Add('悄悄的对你说'+ Socket.ReceiveText);

end;


end.

————————————————

原文链接:https://blog.csdn.net/s371795639/article/details/53980181



推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.03692889213562 seconds