<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Architecting Life &#187; AutoDiscovery</title>
	<atom:link href="http://xujiwei.com/blog/tags/autodiscovery/feed/" rel="self" type="application/rss+xml" />
	<link>http://xujiwei.com/blog</link>
	<description>Just do it</description>
	<lastBuildDate>Thu, 05 Apr 2012 17:19:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>关于 REALbasic 中使用 AutoDiscovery 时发生错误 40 的问题</title>
		<link>http://xujiwei.com/blog/%e5%85%b3%e4%ba%8e-realbasic-%e4%b8%ad%e4%bd%bf%e7%94%a8-autodiscovery-%e6%97%b6%e5%8f%91%e7%94%9f%e9%94%99%e8%af%af-40-%e7%9a%84%e9%97%ae%e9%a2%98/</link>
		<comments>http://xujiwei.com/blog/%e5%85%b3%e4%ba%8e-realbasic-%e4%b8%ad%e4%bd%bf%e7%94%a8-autodiscovery-%e6%97%b6%e5%8f%91%e7%94%9f%e9%94%99%e8%af%af-40-%e7%9a%84%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 16:12:14 +0000</pubDate>
		<dc:creator>Xu Jiwei</dc:creator>
				<category><![CDATA[Desktop]]></category>
		<category><![CDATA[AutoDiscovery]]></category>
		<category><![CDATA[REALbasic]]></category>
		<category><![CDATA[UDP]]></category>

		<guid isPermaLink="false">http://tmp.xujiwei.com/blog/?p=70</guid>
		<description><![CDATA[<a href="http://xujiwei.com/blog/%e5%85%b3%e4%ba%8e-realbasic-%e4%b8%ad%e4%bd%bf%e7%94%a8-autodiscovery-%e6%97%b6%e5%8f%91%e7%94%9f%e9%94%99%e8%af%af-40-%e7%9a%84%e9%97%ae%e9%a2%98/" title="关于 REALbasic 中使用 AutoDiscovery 时发生错误 40 的问题"></a>今天在使用 AutoDiscovery 发送数据时，发生了错误码为 40 的错误，直接在 UDPSocket 的属性列表里找了一下，没有找到对应的错误码。 在网上搜了一下，找到这篇帖子，里面提到在发送大量数据时，UDPSocket 就会报错误，并且这个错误没有在文档中提到，因此这应该是一个系统级别的错误。 MonkeybreadSoftware 提到了 unix 的错误码定义： #define    EMSGSIZE    40     /* Message too long */ 联想到在程序中是在今天开始有问题的，而且今天添加了一大堆数据，看来的确是同于 UDP 消息过大造成的错误 40。 在网上找了找，使用 UDP 发送消息时，报文的大小最好不要超过 MTU，否则会就容易丢包。我在测试时是使用的 127.0.0.1，包大小为 12.5K，照理说应该是直接走 loopback 而不需要走路由的，就算超过 MTU 也应该能发送，不清楚是不是因为 OS 内部实现机制的问题。 为了彻底解决这个问题，最后还是采用了 TCP 来传递大量数据，只使用 UDP 来传递一些控制信息。]]></description>
			<content:encoded><![CDATA[<a href="http://xujiwei.com/blog/%e5%85%b3%e4%ba%8e-realbasic-%e4%b8%ad%e4%bd%bf%e7%94%a8-autodiscovery-%e6%97%b6%e5%8f%91%e7%94%9f%e9%94%99%e8%af%af-40-%e7%9a%84%e9%97%ae%e9%a2%98/" title="关于 REALbasic 中使用 AutoDiscovery 时发生错误 40 的问题"></a><p>今天在使用 AutoDiscovery 发送数据时，发生了错误码为 40 的错误，直接在 UDPSocket 的属性列表里找了一下，没有找到对应的错误码。</p>

<p>在网上搜了一下，找到<a rel="external" href="http://forums.realsoftware.com/viewtopic.php?f=2&amp;t=25418">这篇帖子</a>，里面提到在发送大量数据时，UDPSocket 就会报错误，并且这个错误没有在文档中提到，因此这应该是一个系统级别的错误。</p>

<p>MonkeybreadSoftware 提到了 unix 的错误码定义：</p>

<blockquote>#define    EMSGSIZE    40     /* Message too long */</blockquote>

<p>联想到在程序中是在今天开始有问题的，而且今天添加了一大堆数据，看来的确是同于 UDP 消息过大造成的错误 40。</p>

<p>在网上找了找，使用 UDP 发送消息时，报文的大小最好不要超过 <a rel="external" href="http://en.wikipedia.org/wiki/Maximum_transmission_unit">MTU</a>，否则会就容易丢包。我在测试时是使用的 127.0.0.1，包大小为 12.5K，照理说应该是直接走 loopback 而不需要走路由的，就算超过 MTU 也应该能发送，不清楚是不是因为 OS 内部实现机制的问题。</p>

<p>为了彻底解决这个问题，最后还是采用了 TCP 来传递大量数据，只使用 UDP 来传递一些控制信息。</p>
]]></content:encoded>
			<wfw:commentRss>http://xujiwei.com/blog/%e5%85%b3%e4%ba%8e-realbasic-%e4%b8%ad%e4%bd%bf%e7%94%a8-autodiscovery-%e6%97%b6%e5%8f%91%e7%94%9f%e9%94%99%e8%af%af-40-%e7%9a%84%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

