php使用fsockopen时,fwrite中的\r\n及\n结束符导致,smtp.qq.com响应出现问题

<?php
$t= time();
$sk = fsockopen('tcp://smtp.qq.com',25,
		$errno,
		$errstr,
		5);

echo "sockect ok:".(time()-$t)."\n";
if ( ! is_resource($sk) )
	exit('connect error:'. $errno." ".$errstr);
//设置成阻塞模式
 stream_set_blocking  ($sk,1);
//获取初次链接信息
var_dump( fgets($sk,512) );
//设置读超时
stream_set_timeout( $sk, 3 );
var_dump( stream_get_meta_data( $sk ) );
fwrite($sk,"EHLO qidizi.com\n");//这个会导致超时,个人判断应该是qq在等待一行的输入结束符,但是\n却不是,应该是\r\n才是,就会卡在这里不输出提示,这个问题,在以前的版本,及当前测试时,的163.com上面都没有发现有这个问题
//fwrite($sk,"EHLO qidizi.com\r\n");//正确的一行结束符\r\n,立刻会得到响应

var_dump( fgets($sk,512).':'.(time()-$t) );
//上面的不会超时

echo "4:".(time()-$t)."\n<br />";
var_dump( stream_get_meta_data( $sk ) );
fclose($sk);

测试代码

可能qq的服务器在最近的更改中出现了变动,记得以前是可以使用\n来做为一行的结束符的,也就是一fwrite($sk,"kkk\n")就得到响应,fgets就能立刻成功,测试了一下163,\n是没有问题,最近发现qq的\n却出现问题,导致没有响应,fgets因为缓冲区没有内容导致异常,直到读超时.但是qq的换成了\r\n后就正常了.

所以smtp.qq.com,及smtp.exmail.qq.com都存在这个问题.

我开始以为是某些人说的变成了ssl的问题.却不是.现在的25端口还是可以正常使用的.

php使用fsockopen时,fwrite中的\r\n及\n结束符导致,smtp.qq.com响应出现问题

时间: 2024-11-06 07:11:50

php使用fsockopen时,fwrite中的\r\n及\n结束符导致,smtp.qq.com响应出现问题的相关文章

关于在C++中调用R函数以及RCpp使用

最近因为项目要用到,所以在想办法把R语言用到C++中. 网上查了看到有一个Rcpp的工具.所以在这里总结一下. 现在能想到的几种在C++中调用R语言的方法如下: 1. 使用Rcpp R高级编程技巧及Rcpp的介绍 Rcpp的前世今生 Rcpp快速入门 Rcpp简明入门 Exposing C++ functions and classes with Rcpp modules Rcpp: Seamless R and C++ Integration Rcpp CRAN usage Writing R

在使用easyui,datagrid时,JSON中的如果含有换行符,则不能显示数据

http://www.xuebuyuan.com/2103538.html 每项值需处理换行符 item = item.Replace("\r\n", ""); //或\\r\\n替换换行符 http://www.cnblogs.com/lhws/archive/2013/08/16/3262301.html 在easyui中的datagrid中使用行内编辑时textarea的换行保存到mysql数据库为\n在textarea中输入回车符 在js读取textarea

在 SPSS Statistics 和 Modeler 中调用 R 语言的实现和应用

http://www.ibm.com/developerworks/cn/data/library/ba/ba-1401spss-r/index.html 登录 | 注册   IBM 技术主题 软件下载 社区 技术讲座 搜索 developerWorks 打印本页面 用电子邮件发送本页面 新浪微博 人人网 腾讯微博 搜狐微博 网易微博 Digg Facebook Twitter Delicious Linked In developerWorks 中国 技术主题 Information Mana

2015lopdev生态联盟开发者大会:股市中的R语言量化算法模型

前言 记得10年前还在上学的时候,总是参加IBM的大会,看着各种新技术从实验室创造,特别地神奇.今天我也有机会站在了IBM大会的讲台上,给大家分享我所研究的R语言技术,对我来说也是一件非常有纪念意义的事情. 感谢IBM主办方的邀请,也真心希望有机会与IBM建立合作机会. 目录 我的演讲主题:股市中的R语言量化算法模型 会议体验和照片分享 整体文章:http://blog.fens.me/meeting-lopdev-20150922/

安卓项目中的R.java文件丢失如何解决

第一种方法,也就是你的项目没有什么大的问题的话,那么就作出如图所示的选择,应该就可以解决你的问题了. 第二种就是看看你这边有没有勾选图中所示的选项,也就是你的r.java能不能自动生成. 第三种深层次一点的就是,你先clear一下,然后再build automatically一下,应该就可以了.如图所示. 如果这些都没能够解决你的问题,那么很可能是你很久没有开发项目了,你的sdk要更新了,如图所示. 以上四种方法基本可以解决你的这个问题.如没解决,可以留言. 安卓项目中的R.java文件丢失如何

Android项目中的R文件丢失

Android项目中的R文件丢失恢复的方法如下: (1).修改xml文件命名中的大写字母 (2).选中项目,点击 Project - Clean , 清理一下项目: (3).从别的工程中拷贝一份R文件过来,然后string.xml里随便改动一下,也可更新R文件. (4).右击你的工程(项目)-->Properties-->Android --> 选择相应的target 然后 点击 apply 即可.

2015WOT移动互联网开发者大会:股市中的R语言量化算法模型

前言 大会历时两天,以"洞察移动互联网用户行为 分享移动应用研发实践"为主题,共设立"架构与设计"."平台与技术"."MDSA创新与创业"."移动游戏"."算法分析"."HTML5专场"."运维安全"."新浪微博技术"等八大技术专场,并垂直整合了技术和体验,深度服务于参会者与讲师.同时,在内容上也深度结合了目前移动互联网环境,通

JSTL中替换\r\n

<!--JSTL中替换\r\n--> <c:set var="projectDetails" value="${message}"></c:set> <% request.setAttribute("vEnter", "\\r\\n");//用\转义 %> ${fn:replace(projectDetails,vEnter,"<br>")}

使用windows server2012时FileZilla客户端连接时报150 Opening data channel for directory listing of &quot;/&quot; 响应:425 Can&#39;t open data connection

425 Can't open data connection 和 读取目录列表失败 问题解决 这个问题主要是由于使用Passive Mode模式造成的,解决这个问题很简单: 1.在ftp服务软件中设置指定端口地址范围,允许Passive Mode使用,比如60000-60020 2.然后在ftp服务器的系统防火墙上打开这些tcp端口,比如是60000-60020,如果使用windows自带的防火墙,就一条一条的增加,20行有点麻烦,但是可以解决. 如果ftp用户较多,可以扩大端口范围. 3.如果