首页
社区
课程
招聘
[求助]我是做Delphi开发的,现在需要用到PHP,问个简单的问题...
发表于: 2013-5-22 23:43 5372

[求助]我是做Delphi开发的,现在需要用到PHP,问个简单的问题...

2013-5-22 23:43
5372
如题

我是做Delphi开发的

但是要用到网页.

想要实现一个功能,

就是用网页来发送字符串到我的一个服务器的端口里,然后返回数据到网页上

就是 比如写一个abc.php

我想把数据123456789发送给php   //abc.php?=123456789

然后php要做的就是把123456789这个字符串发送到IP:123.123.123.123的8888端口里

然后我的服务器123.123.123.123经过一系列的计算,将数据返回到页面上

请问这个简单的功能如何实现呢?有注释最好了.

隔行如隔山,确实不懂网页开发,求源码,谢谢了

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 228
活跃值: (115)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
2
既然 你已经 abc.php?=123456789 了.那直接从页面返回就可以了.不需要再从端口去收

还是你说的是1 去访问 2的abc.php?=123456789 ; 2再把东西返回给3?如果是这样用PHP 的SOCK
2013-5-23 00:45
0
雪    币: 78
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
<?php
//abc.php
//传递值get: "abc.php?data=123456789"

if(!isset($_GET['data'])) //如果未接收到传过来的数据(123456789)
{
        echo "no input!";  //显示没有输入
        exit;                                //退出
}

$data=$_GET['data']; //获取传过来的数据(123456789)
$return_data="";
// 设置一些基本的变量
$service_port = 8888;
$address = '123.123.123.123';

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); //建立socket连接(TCP)
if ($socket === false) { //如果建立socket失败,显示错误信息,退出
        echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
        exit;
}

$result = socket_connect($socket, $address, $service_port); //socket连接'123.123.123.123',端口8888
if($result === false) {        //连接失败,显示错误信息,退出
        echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
        exit;
}

socket_write($socket, $data, strlen($data)); //socket发送字符串"123456789"到服务器123.123.123.123
echo  "OK\n"; //发送完成,输出"OK"到网页,根据网页前两个字符是不是"OK",可以确定是不是执行成功

//循环读取"123.123.123.123"计算后的结果,一次读取大小是8192字节
while ($buf = socket_read($socket, 8192)) {
        $return_data .= $buf;
}

socket_close($socket); //关闭socket连接

echo $return_data; //输出返回值到网页,加上前边的输出"OK\n",返回值就是 [OK][换行][结果]

?>
2013-5-23 01:15
0
雪    币: 107
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
1 去访问 2的abc.php?=123456789 ; 2通过socket连接某IP某端口,得到数据后返回给1
2013-5-23 04:17
0
雪    币: 107
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
[QUOTE=举剑问天;1179959]<?php
//abc.php
//传递值get: "abc.php?data=123456789"

if(!isset($_GET['data'])) //如果未接收到传过来的数据(123456789)
{
        echo "no input!";  //显示没有输入...[/QUOTE]

十分感谢您的回复,让我看到了希望

我买了个虚拟主机,测试后发现提示  HTTP 500 内部服务器错误

是哪里写的不对吗
2013-5-23 04:18
0
雪    币: 107
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我估计是虚拟主机禁用了socket相关函数造成的?
2013-5-23 05:08
0
雪    币: 107
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
发现成功了,在虚拟机里测试成功

原来就是虚拟主机禁用了socket相关函数.

怎么办呢,不用socket相关函数是不是实现不了了?

万能的看雪大神们,求方法
2013-5-23 05:49
0
雪    币: 107
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
查了查,可以采用get 或 PHP吗?

我可以Delphi模拟个IIS的80端口,然后PHP里面Post 或 Get 我的服务器123.123.123.123

后面带上数据(?=1234567890)

然后我Delphi过滤,得到后,在返回之

就没用到socket相关函数了?
2013-5-23 05:57
0
雪    币: 306
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
老实讲,你的需求有点乱,听不明白
人家已经把 php的代码都给出来了,你还没有答案?
2013-5-23 07:36
0
雪    币: 78
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
-------------------------------------------------------------------------------------
你这样的话php又需要CURL扩展了
是一样的

php的最强大之处就包括扩展性,不用的话,还不如用ajax实现上述功能
2013-5-23 10:02
0
雪    币: 78
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
1.如果不行,可以联系主机商协调
2.实在不行,保存以下代码到文件,传到虚拟空间:

//info.php
<?php phpinfo(); ?>

把执行结果贴出来,我帮你想办法绕过

3.最后如果还没办法,我可以帮你做静态实现,在delphi使用browser控件,提交后通过ajax访问,但实质还是跟直接和123.123.123.123通信一样。使用web就没意义。
2013-5-23 10:15
0
雪    币: 107
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
To 举剑问天   十分感谢你,我换了个虚拟主机搞定了,是美国的虚拟主机.之前那个是国内的不行.
2013-5-23 19:26
0
雪    币: 107
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
怎么才能对你 致谢 +1 呢
2013-5-23 19:29
0
雪    币: 78
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
不好意思,我点了致谢你的按钮,你获取致谢+1了。。。。。
就没我的事了
2013-5-23 23:26
0
雪    币: 107
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
啊,我想谢你的..我这怎么不可以对你点致谢呢..
2013-5-23 23:31
0
游客
登录 | 注册 方可回帖
返回
//