<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[用setsockopt()来控制recv()与send()的超时]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Mon, 06 Sep 2010 02:05:26 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	在send(),recv()过程中有时由于网络状况等原因，收发不能预期进行,而设置收发超时控制：<br/>在Linux下需要注意的是时间的控制结构是struct timeval而并不是某一整型数，以下是来自于网上一篇文章中的摘录，它是这样写的：<br/>int nNetTimeout=1000;//1秒，<br/>//设置发送超时<br/>setsockopt(socket，SOL_SOCKET,SO_SNDTIMEO，(char *)&amp;nNetTimeout,sizeof(int));<br/>//设置接收超时<br/>setsockopt(socket，SOL_SOCKET,SO_RCVTIMEO，(char *)&amp;nNetTimeout,sizeof(int));<br/>这样做在Linux环境下是不会产生效果的，须如下定义：struct timeval timeout = &#123;3,0&#125;; <br/> //设置发送超时<br/>setsockopt(socket，SOL_SOCKET,SO_SNDTIMEO，(char *)&amp;timeout,sizeof(struct timeval));<br/>//设置接收超时<br/>setsockopt(socket，SOL_SOCKET,SO_RCVTIMEO，(char *)&amp;timeout,sizeof(struct timeval));<br/>有两点注意就是：<br/>1）recv ()的第四个参数需为MSG_WAITALL，在阻塞模式下不等到指定数目的数据不会返回，除非超时时间到。还要注意的是只要设置了接收超时，在没有MSG_WAITALL时也是有效的。说到底超时就是不让你的程序老在那儿等，到一定时间进行一次返回而已。<br/>2）即使等待超时时间值未到，但对方已经关闭了socket， 则此时recv()会立即返回，并收到多少数据返回多少数据。<br/>来源：http://blog.csdn.net/newger/archive/2008/05/19/2459113.aspx
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 用setsockopt()来控制recv()与send()的超时]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>