为了发一条命令,昨天从下午调试到晚上11点,也没有发送成功,都是微软的CSocket类的害的。还不如用基本的socket接口呢,哪怕错了也能找到原因。
今晚再回去调,弄好了,我就可以让监视软件发现异常时发短信到我手机上了。
-------------------------------------------------------------------------------------------------
晚上10:27,在家
又浪费了我两个多小时,做了各种尝试,终于发现了一个不可思议的秘密:
发送数据时,字符串末尾一定要加上\r\n,要不然,虽然send返回成功,但数据却没有发出去。
如:
Send("sms", 5)或Send("sms", 3),返回是5或3,但都没有数据出去。
只有Send("sms\r\n", 5),才能将数据发出。
这微软的bug真是太高深了。我对tcp/ip协议有一些了解,知道tcp会把数据先缓存,待一段时间后,或者长度达到1460字节后,才把数据一起发出。可是,我send后都已经调用close了,而且看到FIN都已经发出去了,数据都没有发出。这是什么鸟协议栈啊?也这算可靠的tcp连接?
唉,还是在机顶盒上玩自己的协议栈好玩啊,什么都看得一清二楚!
------------------------------------------------------------------------------------------------
凌晨0:14
哈哈,终于搞定了发短信功能。
原来也不完全是\r\n的问题,我后来再试,有\r\n也发不出去。然后我换了个端口,用21端口就可以了,原来是用110端口就不行。真是邪了门了,防火墙要阻挡的话,也是在syn命令的时候就阻挡了,也不会等到send数据的时候阻挡啊。
posted on 2008-09-16 16:19
游子 阅读(493)
评论(0) 编辑 收藏 引用 所属分类:
软件 、
原创技术