<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.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://www.jackxiang.com/post//</link>
<title><![CDATA[利用PHP和C语言通过Socket通信方法]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Thu, 26 Nov 2009 16:35:13 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	<br/>/*server.c*/<br/><div class="code"><br/>#include &lt;sys/types.h&gt;<br/>#include &lt;sys/socket.h&gt;<br/>#include &lt;string.h&gt;<br/>#include &lt;stdio.h&gt;<br/>#include &lt;netinet/in.h&gt;<br/>#include &lt;arpa/inet.h&gt;<br/>#include &lt;stdlib.h&gt;<br/>#include &lt;unistd.h&gt;<br/>#include &lt;errno.h&gt;<br/><br/>main()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; int sock;<br/>&nbsp;&nbsp;&nbsp;&nbsp; struct sockaddr_in server,client;<br/>&nbsp;&nbsp;&nbsp;&nbsp; int recvd,snd;<br/>&nbsp;&nbsp;&nbsp;&nbsp; int structlength;<br/>&nbsp;&nbsp;&nbsp;&nbsp; char * server_ip = &quot;128.168.10.1&quot;;/*server ip address*/<br/>&nbsp;&nbsp;&nbsp;&nbsp; int port = 8888;<br/>&nbsp;&nbsp;&nbsp;&nbsp; char recvbuf&#91;2000&#93;,sendbuf&#91;2000&#93;;&nbsp;&nbsp; <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; char str1&#91;&#93;=&quot;I have received:&#92;n&quot;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; memset((char *)&amp;server,0,sizeof(server));<br/>&nbsp;&nbsp;&nbsp;&nbsp; server.sin_family = AF_INET;<br/>&nbsp;&nbsp;&nbsp;&nbsp; server.sin_addr.s_addr = inet_addr(server_ip);<br/>&nbsp;&nbsp;&nbsp;&nbsp; server.sin_port = htons(port);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; memset((char *)&amp;client,0,sizeof(client));<br/>&nbsp;&nbsp;&nbsp;&nbsp; client.sin_family = AF_INET;<br/>&nbsp;&nbsp;&nbsp;&nbsp; client.sin_addr.s_addr = htonl(INADDR_ANY);<br/>&nbsp;&nbsp;&nbsp;&nbsp; client.sin_port = htons(port);<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; if((sock = socket (AF_INET,SOCK_DGRAM,0)) &lt; 0 )&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;socket create error!&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(1);<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; structlength = sizeof(server);<br/>&nbsp;&nbsp;&nbsp;&nbsp; if( bind(sock,(struct sockaddr *) &amp;server,structlength) &lt; 0)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;socket bind error!&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; perror(&quot;bind&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(1);<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; while(1)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; structlength = sizeof(client);&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;waiting.......&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; recvd = recvfrom(sock,recvbuf,sizeof(recvbuf),0,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (struct sockaddr *) &amp; client,&amp;structlength);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(recvd &lt; 0)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; perror(&quot;recvfrom&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(EXIT_FAILURE);&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;received:%s&#92;n&quot;,recvbuf);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memset(sendbuf,0,strlen(sendbuf));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memcpy(sendbuf,str1,strlen(str1));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; snd = sendto(sock,sendbuf,strlen(str1),0,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (struct sockaddr *) &amp;client,structlength);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(snd &lt; 0)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; perror(&quot;sendto&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;sendok!&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; close(sock);<br/>&#125;<br/></div><br/>/*<br/>gcc -o server server.c生成server程序，在服务器端运行./server<br/>*/<br/>/*client.php*/<br/><div class="code"><br/>&lt;?php<br/>error_reporting(E_ALL);<br/>set_time_limit(0);<br/>echo &quot;&lt;h2&gt;TCP/IP Connection&lt;/h2&gt;&#92;n&quot;;<br/><br/>$service_port = 9501;<br/>$address = &quot;127.0.0.1&quot;;<br/><br/>$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);<br/>if ($socket &lt; 0) &#123;<br/>&nbsp;&nbsp;echo &quot;socket_create() failed: reason: &quot; . socket_strerror($socket) . &quot;&#92;n&quot;;<br/>&#125; else &#123;<br/>&nbsp;&nbsp;echo &quot;OK.&#92;n&quot;;<br/>&#125;<br/><br/>echo &quot;试图连接 &#039;$address&#039; 端口 &#039;$service_port&#039;...&lt;br&gt;&quot;;<br/>$result = socket_connect($socket, $address, $service_port);<br/>if ($result &lt; 0) &#123;<br/>&nbsp;&nbsp;echo &quot;socket_connect() failed.&#92;nReason: ($result) &quot; . socket_strerror($result) . &quot;&#92;n&quot;;<br/>&#125; else &#123;<br/>&nbsp;&nbsp;echo &quot;连接OK&lt;br&gt;&quot;;<br/>&#125;<br/><br/>$in = &quot;Hello&#92;r&#92;n&quot;;<br/>$in .= &quot; I am msingle.&#92;r&#92;n&quot;;<br/>$out = &#039;&#039;;<br/>$out1 = &#039;&#039;;<br/><br/>if (!socket_write($socket, $in, strlen($in))) &#123;<br/>&nbsp;&nbsp;echo &quot;socket_write() failed: reason: &quot; . socket_strerror($socket) . &quot;&#92;n&quot;;<br/>&#125; else &#123;<br/>&nbsp;&nbsp;echo &quot;发送到服务器信息成功！&lt;br&gt;&quot;;<br/>&nbsp;&nbsp;echo &quot;发送的内容为:&lt;font color=&#039;red&#039;&gt;$in&lt;/font&gt; &lt;br&amp;gt;&quot;;<br/>&#125; while ($out = socket_read($socket, $service_port)) &#123;<br/>&nbsp;&nbsp;echo &quot;接收服务器回传信息成功！&lt;br&gt;&quot;;<br/>&nbsp;&nbsp;echo &quot;接受的内容为:&quot;, $out;<br/>&#125;<br/><br/>echo &quot;关闭SOCKET...&lt;br&gt;&quot;;<br/>socket_close($socket);<br/>echo &quot;关闭OK&lt;br&gt;&quot;;<br/><br/>?&gt;<br/><br/><br/><br/></div><br/>/*这个过程很简单，就是客户端提交一个信息，服务端接收，<br/>并返回给客户端一个&quot;接收到&quot;的确认信息。<br/>*/
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 利用PHP和C语言通过Socket通信方法]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>