<?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>i-keng.com &#187; เปิด socket ไปหา tomcat</title>
	<atom:link href="http://www.i-keng.com/tag/%e0%b9%80%e0%b8%9b%e0%b8%b4%e0%b8%94-socket-%e0%b9%84%e0%b8%9b%e0%b8%ab%e0%b8%b2-tomcat/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.i-keng.com</link>
	<description>free php scripts ajax web resource</description>
	<lastBuildDate>Sun, 29 Aug 2010 08:59:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>การใช้งาน fsockopen เชื่อมต่อ ไปหา Server ที่เป็น Tomcat และ Apache</title>
		<link>http://www.i-keng.com/2009/09/25/fsockopen-to-tomcat-server/</link>
		<comments>http://www.i-keng.com/2009/09/25/fsockopen-to-tomcat-server/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 14:47:53 +0000</pubDate>
		<dc:creator>i-keng</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[close connection when fsockopen]]></category>
		<category><![CDATA[cURL]]></category>
		<category><![CDATA[fsockopen]]></category>
		<category><![CDATA[fsockopen to tomcat]]></category>
		<category><![CDATA[fsockopen to tomcat server]]></category>
		<category><![CDATA[การใช้งาน cURL]]></category>
		<category><![CDATA[การใช้งาน fsockopen]]></category>
		<category><![CDATA[เปิด socket ไปหา tomcat]]></category>

		<guid isPermaLink="false">http://www.i-keng.com/?p=48</guid>
		<description><![CDATA[สืบเนื่องจากผมประสบปัญหาการใช้งาน fsockopen ที่เคย Connect ไปหา Server ที่เป็น Apache แต่ ณ.บัดนาว ต้องใช้งาน fsockopen Connect ไปหา Server ที่เป็น Tomcat ความบรรลัยจึงบังเกิด &#8230; โดยปกติแล้วนั้น เมื่อ ใช้งาน fsockopen Connect ไปหา Server ที่เป็น Apache นั้น มันจะต้ด Header ด้วย \r\n ดังนี้.. $ctrlf = &#34;\r\n&#34;; $header = &#34;POST /  HTTP/1.0&#34;.$ctrlf; $header .= &#34;Content-type: application/x-www-form-urlencoded&#34;.$ctrlf; $header .= &#34;Content-Length: &#34;.$contentlength.$ctrlf; $fp = fsockopen(&#34;www.example.com&#34;, 80, $errno, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="alignnone size-full wp-image-59" title="php-apache-tomcat" src="http://www.i-keng.com/wp-content/uploads/2009/09/php-apache-tomcat.jpg" alt="php-apache-tomcat" width="365" height="218" /></p>
<p>สืบเนื่องจากผมประสบปัญหาการใช้งาน <a href="http://th2.php.net/manual/en/function.fsockopen.php" target="_blank">fsockopen</a> ที่เคย Connect ไปหา Server ที่เป็น Apache แต่ ณ.บัดนาว ต้องใช้งาน <a href="http://th2.php.net/manual/en/function.fsockopen.php" target="_blank">fsockopen</a> Connect ไปหา Server ที่เป็น Tomcat ความบรรลัยจึงบังเกิด &#8230;</p>
<p><span id="more-48"></span></p>
<p>โดยปกติแล้วนั้น เมื่อ ใช้งาน <a href="http://th2.php.net/manual/en/function.fsockopen.php" target="_blank">fsockopen</a> Connect ไปหา Server ที่เป็น Apache นั้น มันจะต้ด Header ด้วย <span style="color: #ff0000;">\r\n</span> ดังนี้..</p>
<pre class="brush: php">
$ctrlf = &quot;\r\n&quot;;
$header = &quot;POST /  HTTP/1.0&quot;.$ctrlf;
$header .= &quot;Content-type: application/x-www-form-urlencoded&quot;.$ctrlf;
$header .= &quot;Content-Length: &quot;.$contentlength.$ctrlf;
$fp = fsockopen(&quot;www.example.com&quot;, 80, $errno, $errstr, 30);
if ($fp){
fwrite($fp,$header.$ctrlf);
while (!feof($fp)) {
$tmp = fgets($fp, 200);
$response .= $tmp;
}
} else {
$response = &quot;Connection failed : &quot;.$errstr.&quot;(&quot;.$errno.&quot;)&lt;br /&gt;\n&quot;;
}
</pre>
<p>แต่่ด้วย Code เดียวกันนี้ ถ้า ใช้งาน <a href="http://th2.php.net/manual/en/function.fsockopen.php" target="_blank">fsockopen</a> ไปหา Server ที่เป็็น Tomcat นั้น Server จะ Close Connection ไปเลย เนื่องจาก<br />
<span style="color: #008000;">ถ้าใช้งาน <a href="http://th2.php.net/manual/en/function.fsockopen.php" target="_blank">fsockopen</a> ไปหา Server ที่เป็น Tomcat นั้น จะตัด Header ด้วย \n ตัวเดียวเท่านั้น..</span><span style="color: #ff0000;">(ทำไมไม่เสือกทำให้เหมือนกันวะ!!)</span><br />
Code ด้านบน จึงใช้งานเชื่อมต่อไปหา Server ที่เป็น Tomcat ไม่ได้ สาดด!!</p>
<p><span style="color: #ff6600;">เพราะฉะนั้นถ้าจะใช้งาน <a href="http://th2.php.net/manual/en/function.fsockopen.php" target="_blank">fsockopen</a> ไปหา Server ที่เป็น Tomcat เราจึงต้องเปลี่ยนการตัด Header จาก \r\n เป็น \n ดังนี้<br />
</span></p>
<pre class="brush: php">
$ctrlf = &quot;\n&quot;;
</pre>
<p>หรือมีอีก 1 วิธี คือใช้งาน <a href="http://th2.php.net/curl" target="_blank">cURL</a> ไปซะเลย ซึ่งวิธีนี้จะ Post ไปได้ทั้ง Server ที่เป็น Apache และ Tomcat ครับ ดังนี้</p>
<pre class="brush: php">
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, &quot;example.com&quot;);
curl_setopt($ch, CURLOPT_HTTPHEADER,array(&quot;Content-type: application/x-www-form-urlencoded&quot;));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, &quot;params=yourparameter&quot;);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
</pre>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.i-keng.com/2009/09/25/fsockopen-to-tomcat-server/" target="_blank"><img src="http://www.i-keng.com/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://www.i-keng.com/2009/09/25/fsockopen-to-tomcat-server/" target="_blank" title="Share on Facebook">Share on Facebook</a></p><div style='display:none' id="post-refEl-48"></div>]]></content:encoded>
			<wfw:commentRss>http://www.i-keng.com/2009/09/25/fsockopen-to-tomcat-server/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
