不知道php的socket可以吗?
asp用winsock可以,用ip和端口传送特定格式数据.
asp用winsock可以,用ip和端口传送特定格式数据.
解决方案 »
- 字符串转义问题
- php 用smtp的类发邮件,被一些邮箱当作垃圾邮件的问题。
- mssql和excel表怎么样导入mysql?(急求)
- 用户输入的查询问题
- 一个简单的问题,请大家帮个忙!谢谢了!
- 请问各位大侠:如何验证用户在表单中输入的是否是日期类型?
- 我只在自己的电脑上学习PHP(学习它的语法),只装PHP的编译器可以吗?装好以后应该怎样使用它来写PHP的源程序,和编译它。
- 本来不想在这里发帖子的,但是,我来得最多的地方就是这里了
- centos 7.0最小化安装nginx 源代码编译安装 过程都记录下来了 不能访问 这是什么原因?
- 求助在mac下终端安装php失败
- 关于echo的
- 关于echo
第一种是http方式
第二种是socket方式
第一种一般使用get方式传送信息到短信接口服务器,比如http://接口服务器:port/?参数名=****等
因为短信内容不允许超过70个汉字,所以get方式足够使用了
第二种只是使用socket方式连接而已,而其他参数跟get方式没啥区别
$fp = fopen("http://url:port/?spid=80889&password=123456..........一系列参数", "r");
第二种方法
$fp = fsockopen($url, $port);
$request="spid=80889";//发送内容
fputs($fp, $request);
while (!feof ($fp))
{
$tmp .= fgets($fp, 4096); //接收信息
}
if($tmp=="ok")
{
$request="password=123456";//发送内容
fputs($fp, $request);
$tmp=="";
while (!feof ($fp))
{
$tmp .= fgets($fp, 4096); //接收信息
}
}
...
.....
fclose($fp);使用类似的这种方法就可以了
只要记住一点,只要把参数提交到接口服务器,其他的你都不用考虑
有一个流程是共同的
就是,你把参数信息提交到服务器后,服务器同样采用两种方式中的一种方式,把信息返回给你
比如,你事先告诉服务商,给你提交是否正确发送短信的报告地址,http://自己的网站地址/文件名
那么你每次向服务器提交信息,他们处理完你的信息之后,就会执行你告诉他们的地址,以方便让你知道短信是否正常发送,当然,你也可以使用指定端口用socket方式进行要求报告
上面我贴的代码,就足够用了
$smsUID="xxx"; //短信网关分配给你的用户名和密码
$smsPWD="SMS";
$smsSocket="192.168.1.1"; //短信网关的IP 211.151.90.7
$smsPost=1081; //短信网关的端口
$fp=@fsockopen($smsSocket,$smsPost,&$errno, &$errstr, $smsTimeout);
if(!$fp)
{
echo "<font color=#ff0000><b>连接失败,请查看是否正确连接到网络!</b></font>"; //连接失败
}
else
{
//登录到短信中心服务器
fputs($fp,"login\n");
fputs($fp,$smsUID."\n");
fputs($fp,$smsPWD."\n");
fputs($fp,"\n");
$MessageContent=trim($_POST["MessageContent"]);
$MobileNo=trim($_POST["MobileNo"]); $ServiceType="MFFW"; //计费代码 3 TP 0.5 按条收费
$Priority="0"; //发送优先级
$AgentFlag="0"; //代收费标志
$MoFlag="2"; //点播号
$ExpireTime=""; //短信失效时间
$ScheduleTime=""; //定时发送时间
$ReportFlag="1"; //状态报告
$status="255"; //都要返回状态报告
$MessageType="TEXT"; //短信类型 文本信息
$FreeTerminalNo=$MobileNo; //记费手机号码
$TargetTerminalNo=$MobileNo; //接收方手机号码
$SourceTerminalNo=$MobileNo; //发送方手机号码
$MessageId="123";
print(fget($fp,4096));
print(fget($fp,4096));
fputs($fp,"submit"."\n");
fputs($fp,$MessageId."\n");
fputs($fp,$FreeTerminalNo."\n");
fputs($fp,$SourceTerminalNo."\n");
fputs($fp,$TargetTerminalNo."\n");
fputs($fp,$ServiceType."\n");
fputs($fp,$MoFlag."\n");
fputs($fp,$ReportFlag."\n");
fputs($fp,$ExpireTime."\n");
fputs($fp,$ScheduleTime."\n");
fputs($fp,$MessageType."\n");
$MessageContent=str_replace("\r","",str_replace("\n","",$MessageContent)); //不能有回车
fputs($fp,$MessageContent."\n");
fputs($fp,"\n"); print("<br>发送成功!<br>".$MobileNo." : ".$MessageContent);
fclose($fp);
}