Delphi服务端和PHP客户端通过Socket通信
在开始之前看下效果
PHP页面作为客户端发送请求给作为服务端的Delphi应用程序
PHP客户端页面打开如下
Delphi服务端应用程序打开如下
每次PHP页面刷新一下,Delphi的文本框都显示"我上线啦!"做的很粗糙,但是似乎可以作为某种功能的demo
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.
http://blog.csdn.net/s371795639/article/details/53980181
Delphi服务端和PHP客户端通过Socket通信的更多相关文章
- 成功使Linux服务端和Windows客户端建立socket通信
一.准备工作 1.一台装有虚拟机的Windows7操作系统,虚拟机中装的是CentOS6.5版本的Linux 2.Windows7已经装有java环境 二.编码 使用java编写socket通信的服务 ...
- [经验] Java 服务端 和 C# 客户端 实现 Socket 通信
由于项目需要, 我需要通过 Java 开发的服务端对 C# 作为脚本语言开发的 unity 项目实现控制 话不多说, 直接上代码 首先, 我们先来构建服务端的代码, 服务端我们使用 Java 语言 i ...
- [转]C服务端与java客户端的socket通信注意事项
http://blog.csdn.net/gaoxin1076/article/details/7671752 Socket网络通讯开发总结之:Java 与 C进行Socket通讯 注意以下问题: 1 ...
- Delphi XE5通过WebService开发Web服务端和手机客户端
Delphi XE5通过WebService开发Web服务端和手机客户端介绍 我们开发一个三层的android程序 建立一个webservices stand-alone vcl applicati ...
- java网络编程TCP传输—流操作—服务端反馈与客户端接收
在读取完流后,服务端会向客户端返回一些数据,告诉客户端,已经写完了. 在这里和”流操作—拿到源后的写入动作“差不多,客户端同样以byte与Buffered两种缓冲读取作为例子,同时,.也是希望大家给补 ...
- ConsoleWebsocketServer服务端和ConsoleWebsocketClient客户端
本文是简述了Websocket的服务端和客户端的实时通讯过程,Websocket的服务端和客户端的具体使用使用了2种Websocket的服务端和2种客户端. 以下代码使用的是Visual Studio ...
- 基于TCP协议套接字,服务端实现接收客户端的连接并发
基于TCP协议套接字,服务端实现接收客户端的连接并发 服务端 import socket from multiprocessing import Process server=socket.socke ...
- 写一个基于TCP协议套接字,服务端实现接收客户端的连接并发
''' 写一个基于TCP协议套接字,服务端实现接收客户端的连接并发 ''' client import socket import time client = socket.socket() clie ...
- 提高服务端性能的几个socket选项
提高服务端性能的几个socket选项 在之前的一篇文章中,作者在配置了SO_REUSEPORT选项之后,使得应用的性能提高了数十倍.现在介绍socket选项中如下几个可以提升服务端性能的选项: SO_ ...
随机推荐
- 算法复习——半平面交(bzoj2618凸多边形)
讲解: 这里套用wuvin神犇的ppt,附上友情链接:http://blog.leanote.com/wuvin 半平面交: 算法流程: 注意事项: 例题: Description 逆时针给出n个凸多 ...
- mysql查询死锁,执行语句,服务器状态等语句集合
[转]http://blog.csdn.net/enweitech/article/details/52447006
- PHP文件上传设置和处理(多文件)
<!--upload.php文件内容--><?phpheader("Content-Type:text/html;charset=utf-8");/* //原来$ ...
- 一个强大的Android模拟器Genymotion
相信很多Android开发者一定受够了速度慢.体验差效率及其地下的官方模拟器了,自己在平时的开发中几乎是不会用模拟器的,等的时间太久了,但是在一些尺寸适配或是兼容性测试的时候没有足够多的机器进行测试, ...
- 测试开发系列之Python开发mock接口(二)
上一篇咱们已经把开发前的环境准备好了,还需要再做一点准备,你的账户信息是存在哪的呢,当然是存在数据库里的,咱们在去支付,扣钱的时候,肯定是从数据库里面操作的,去更新账户表里面的数据,所以咱们先要把数据 ...
- (12)java -IDEA使用
一. 引入jar包 1. 2.
- sugar与阿龙的互怼(第一季)
§ 第一季 回家风波 高考了,啦啦啦~ 快要高考了,显然sugar很伤心. 显然不是因为快要考试了sugar才伤心的. 那为什么??? 因为他们都回家了,但是sugar和他的小伙伴们都不回家!!! ...
- 洛谷P1352 没有上司的舞会
题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri, ...
- DBA总结
HA MHA(1)从宕机崩溃的master保存二进制日志事件(binlog events);(2)识别含有最新更新的slave:(3)应用差异的中继日志(relay log)到其他的slave:(4) ...
- 《Java虚拟机原理图解》 1.1、class文件基本组织结构
作为Java程序猿,我们知道,我们写好的.java 源代码,最后会被Java编译器编译成后缀为.class的文件,该类型的文件是由字节组成的文件,又叫字节码文件.那么,class字节码文件里面到底是有 ...