<?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>Hao&#039;s Blog &#187; socket</title>
	<atom:link href="http://www.haostudio.idv.tw/blog/?cat=31&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>https://www.haostudio.idv.tw/blog</link>
	<description>小豪的日誌</description>
	<lastBuildDate>Thu, 10 Nov 2016 10:53:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>解決bind() 會產生Address already in use的錯誤問題</title>
		<link>https://www.haostudio.idv.tw/blog/?p=203</link>
		<comments>https://www.haostudio.idv.tw/blog/?p=203#comments</comments>
		<pubDate>Fri, 08 May 2009 08:01:05 +0000</pubDate>
		<dc:creator>hao</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[socket]]></category>

		<guid isPermaLink="false">http://www.haostudio.idv.tw/blog/?p=203</guid>
		<description><![CDATA[



(adsbygoogle = window.adsbygoogle &#124;&#124; []).push({});

這幾天, 因為無聊, 上網看了一些socket的function, 順手抄了一個簡單的socket程式.
但是這程式總是很不穩定.
怪怪! server端的程式, run 了第二次後, bind() 就會產生』Address already in use』的錯誤訊息.
上Google查了一下, 才知道bind() 之後, 若程式已經結束, 雖然已經正常把socket給close() 了,
但是kernel並不會release這個TCP 的connectioin, 它的狀態會keep 在』TIME_WAIT』狀態. (可以用netstat -t查詢)
要好幾分鐘後, kernel才會release 掉.
怪怪!! 搞不懂為何要做成這樣?? 算了! 找到解答就好.
在bind() 之前加上
來告訴bind(), 若這個address 假設已經被佔用了, 那就重複使用吧.
完整的code 如下:
Server端:

#include &#60;sys/types.h&#62;
#include &#60;sys/socket.h&#62;
#include &#60;netinet/in.h&#62;
#include &#60;time.h&#62;
#include &#60;stdio.h&#62;
#include &#60;stdlib.h&#62;
#include &#60;string.h&#62;
#include &#60;errno.h&#62;
#include &#60;signal.h&#62;    /* signal name macros, and the signal() [...]]]></description>
		<wfw:commentRss>https://www.haostudio.idv.tw/blog/?feed=rss2&amp;p=203</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
