<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=UnixSocketProgrammingAndWindowsImplementation</id>
	<title>UnixSocketProgrammingAndWindowsImplementation - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=UnixSocketProgrammingAndWindowsImplementation"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=UnixSocketProgrammingAndWindowsImplementation&amp;action=history"/>
	<updated>2026-05-14T19:51:39Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=UnixSocketProgrammingAndWindowsImplementation&amp;diff=85066&amp;oldid=prev</id>
		<title>Maintenance script: Repair batch-0003 pages from live compare</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=UnixSocketProgrammingAndWindowsImplementation&amp;diff=85066&amp;oldid=prev"/>
		<updated>2026-03-27T00:29:13Z</updated>

		<summary type="html">&lt;p&gt;Repair batch-0003 pages from live compare&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:29, 27 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l64&quot;&gt;Line 64:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 64:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      u_short sa_family;    /* address family */&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      u_short sa_family;    /* address family */&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      char sa_data&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;14&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;;    /* 주소(IP 주소 + 포트 번호) */&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      char sa_data&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;14&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;;    /* 주소(IP 주소 + 포트 번호) */&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  };&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  };&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l76&quot;&gt;Line 76:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 76:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  struct in_addr sin_addr;		// ip 주소&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  struct in_addr sin_addr;		// ip 주소&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  char sin_zero&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;8&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;;			// 쓰지 않는 주소&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  char sin_zero&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;8&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;;			// 쓰지 않는 주소&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  };&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  };&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l133&quot;&gt;Line 133:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 133:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  */&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  */&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== sin_zero&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/del&gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;8&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/del&gt;: ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== sin_zero&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;8&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;: ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;// sin_zero 배열은 항상 0으로 채워져 있어야한다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;// sin_zero 배열은 항상 0으로 채워져 있어야한다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l163&quot;&gt;Line 163:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 163:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Server 가 될 프로그램에 필요한 함수 =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Server 가 될 프로그램에 필요한 함수 =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&amp;amp;#91;HTML(&amp;amp;lt;&lt;/del&gt;img src=&amp;quot;http://zeropage.org/pub/upload/sock.gif&amp;quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;gt;&amp;amp;lt;&lt;/del&gt;br&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;gt;)&amp;amp;#93;&amp;amp;#93;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;&lt;/ins&gt;img src=&amp;quot;http://zeropage.org/pub/upload/sock.gif&amp;quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;gt;&amp;lt;&lt;/ins&gt;br&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Bind - socket과 네트워크 정보를 연결하는 Bind!!! ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Bind - socket과 네트워크 정보를 연결하는 Bind!!! ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  #include &amp;amp;lt;sys/socket.h&amp;amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  #include &amp;amp;lt;sys/socket.h&amp;amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l220&quot;&gt;Line 220:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 220:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Client 가 될 프로그램에 필요한 함수 =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Client 가 될 프로그램에 필요한 함수 =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&amp;amp;#91;HTML(&amp;amp;lt;&lt;/del&gt;img src=&amp;quot;http://zeropage.org/pub/upload/sock.gif&amp;quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;gt;&amp;amp;lt;&lt;/del&gt;br&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;gt;)&amp;amp;#93;&amp;amp;#93;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;&lt;/ins&gt;img src=&amp;quot;http://zeropage.org/pub/upload/sock.gif&amp;quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;gt;&amp;lt;&lt;/ins&gt;br&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== connect - Server에 연결한다. ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== connect - Server에 연결한다. ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ※ connect와 server 함수중 어떠한 함수가 닮았는지 이야기 해보자.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ※ connect와 server 함수중 어떠한 함수가 닮았는지 이야기 해보자.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l253&quot;&gt;Line 253:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 253:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= server/client 공통 - 입출력 함수 =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= server/client 공통 - 입출력 함수 =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&amp;amp;#91;HTML(&amp;amp;lt;&lt;/del&gt;img src=&amp;quot;http://zeropage.org/pub/upload/sock.gif&amp;quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;gt;&amp;amp;lt;&lt;/del&gt;br&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;gt;)&amp;amp;#93;&amp;amp;#93;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;&lt;/ins&gt;img src=&amp;quot;http://zeropage.org/pub/upload/sock.gif&amp;quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;gt;&amp;lt;&lt;/ins&gt;br&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== send/write - 상대에게 데이터를 보낸다. ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== send/write - 상대에게 데이터를 보낸다. ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  #include &amp;amp;lt;unistd.h&amp;amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  #include &amp;amp;lt;unistd.h&amp;amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l264&quot;&gt;Line 264:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 264:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  예제 )&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  예제 )&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  char buf1&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[] &lt;/del&gt;= &amp;quot;Hello, World!&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  char buf1&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&amp;amp;#93; &lt;/ins&gt;= &amp;quot;Hello, World!&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  char *buf2 = &amp;quot;Hello, World!&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  char *buf2 = &amp;quot;Hello, World!&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l287&quot;&gt;Line 287:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 287:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  예제 )&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  예제 )&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  char buf1&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;200&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  char buf1&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;200&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  char buf2&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;200&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  char buf2&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;200&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  int str_len;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  int str_len;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l294&quot;&gt;Line 294:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 294:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	str_len = read(sockfd, buf2, sizeof(buf2));&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	str_len = read(sockfd, buf2, sizeof(buf2));&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	buf1&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;str_len&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;] &lt;/del&gt;= 0;			// 배열의 끝을 설정해준다. 하지 않으면 뒤의 쓰레기 값까지 접근된다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	buf1&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;str_len&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93; &lt;/ins&gt;= 0;			// 배열의 끝을 설정해준다. 하지 않으면 뒤의 쓰레기 값까지 접근된다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	buf1&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;str_len&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;] &lt;/del&gt;= 0;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	buf1&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;str_len&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93; &lt;/ins&gt;= 0;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  // 타 시스템으로 이식을 위해 되도록 send를 사용하는 것이 좋다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  // 타 시스템으로 이식을 위해 되도록 send를 사용하는 것이 좋다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l381&quot;&gt;Line 381:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 381:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  int sizeof_sockaddr_in;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  int sizeof_sockaddr_in;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  char msg&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[] &lt;/del&gt;= &amp;quot;Hello, World!&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  char msg&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&amp;amp;#93; &lt;/ins&gt;= &amp;quot;Hello, World!&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	if( WSAStartup(MAKEWORD(2,2), &amp;amp;amp;wsaData) == -1 )&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	if( WSAStartup(MAKEWORD(2,2), &amp;amp;amp;wsaData) == -1 )&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=UnixSocketProgrammingAndWindowsImplementation&amp;diff=83519&amp;oldid=prev</id>
		<title>Maintenance script: Repair MoniWiki formatting after migration</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=UnixSocketProgrammingAndWindowsImplementation&amp;diff=83519&amp;oldid=prev"/>
		<updated>2026-03-26T14:01:43Z</updated>

		<summary type="html">&lt;p&gt;Repair MoniWiki formatting after migration&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:01, 26 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l468&quot;&gt;Line 468:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 468:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[프로그래밍분류]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[프로그래밍분류]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=UnixSocketProgrammingAndWindowsImplementation&amp;diff=39967&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:28, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=UnixSocketProgrammingAndWindowsImplementation&amp;diff=39967&amp;oldid=prev"/>
		<updated>2021-02-07T05:28:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;페이지의 컨텐츠를 보아하니, 따로 페이지를 뽑아내도 될것 같아 [[문서구조조정]] 하였습니다. 원래 페이지 이름은 &amp;#039;&amp;#039;&amp;#039;데블스캠프2005/Socket Programming in Unix/Windows Implementation&amp;#039;&amp;#039;&amp;#039;였습니다. - [[임인택]]&lt;br /&gt;
&lt;br /&gt;
주제 : Socket Programming의 기초적인 부분을 알아본다.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= 기본적인 함수/개념들 =&lt;br /&gt;
== Socket ==&lt;br /&gt;
 ※ 소켓이란?&lt;br /&gt;
 #include &amp;amp;lt;sys/types.h&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;sys/socket.h&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 int socket(int domain, int type, int protocol);&lt;br /&gt;
 // 성공 시 파일 디스크립터, 실패 시 -1 리턴&lt;br /&gt;
&lt;br /&gt;
=== domain: ===&lt;br /&gt;
PF_INET		: 인터넷 프로토콜 체계 사용&lt;br /&gt;
&lt;br /&gt;
PF_INET6 IPv6	: 프로토콜 체계 사용&lt;br /&gt;
&lt;br /&gt;
PF_UNIX		: 유닉스 방식의 프로토콜 체계 사용 (프로세스간 통신)&lt;br /&gt;
&lt;br /&gt;
PF_NS XEROX	: 네트워크 시스템의 프로토콜 체계 사용&lt;br /&gt;
&lt;br /&gt;
PF는 Protocol Family&lt;br /&gt;
PF대신 AF를 사용해도 무방. (ex. PF_INET -&amp;gt; AF_INET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== type: 서비스 타입 ===&lt;br /&gt;
 ※ TCP/IP, UDP란?&lt;br /&gt;
SOCK_STREAM	: 스트림 방식의 소켓 생성 (TCP/IP)&lt;br /&gt;
&lt;br /&gt;
SOCK_DGRAM	: 데이터그램 방식의 소켓 생성 (UDP)&lt;br /&gt;
&lt;br /&gt;
SOCK_RAW		: raw 모드의 소켓 생성&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== protocol: 프로토콜 ===&lt;br /&gt;
IPPROTO_TCP	: TCP 기반. 값은 0이다.&lt;br /&gt;
&lt;br /&gt;
IPPROTO_UDP	: UDP 기반. 값은 0이다.&lt;br /&gt;
// 우리가 사용하는 프로토콜인 TCP, UDP가 0이므로 0으로 써도 무방하다.&lt;br /&gt;
// 구체적인 프로토콜을 선택할 때 사용하는데 대부분의 응용 프로그렘에서는 0으로 지정하면 된다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 예제)&lt;br /&gt;
 &lt;br /&gt;
 main(){&lt;br /&gt;
 int sockfd;&lt;br /&gt;
 &lt;br /&gt;
 	sockfd = socket(AF_INET, SOCK_STREAM, 0);&lt;br /&gt;
 &lt;br /&gt;
 	if(sockfd == -1)&lt;br /&gt;
 		fprintf(stderr, &amp;quot;socket 함수에서 에러&amp;quot;), exit(1);&lt;br /&gt;
 	// 에러가 났을경우( sockfd == -1) 에러를 출력하고 프로그램 종료.&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 네트워크 정보 ==&lt;br /&gt;
 struct sockaddr {&lt;br /&gt;
 &lt;br /&gt;
     u_short sa_family;    /* address family */&lt;br /&gt;
 &lt;br /&gt;
     char sa_data[14];    /* 주소(IP 주소 + 포트 번호) */&lt;br /&gt;
 &lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 struct sockaddr_in {&lt;br /&gt;
 &lt;br /&gt;
 short sin_family;			// 주소 체계를 나타낸다.&lt;br /&gt;
 &lt;br /&gt;
 u_short sin_port;			// port 번호&lt;br /&gt;
 &lt;br /&gt;
 struct in_addr sin_addr;		// ip 주소&lt;br /&gt;
 &lt;br /&gt;
 char sin_zero[8];			// 쓰지 않는 주소&lt;br /&gt;
 &lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 ※ 왜 sockaddr과 sockaddr_in의 structure가 같을까?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== sin_family:	// 주소체계 ===&lt;br /&gt;
AF_INET		: 인터넷 주소 체계&lt;br /&gt;
&lt;br /&gt;
AF_UNIX		: 유닉스 파일 주소 체계&lt;br /&gt;
&lt;br /&gt;
AF_NS XEROX	: 주소 체계&lt;br /&gt;
&lt;br /&gt;
// sockaddr_in 은 TCP/IP체제 이므로 AF_INET만 사용한다. -&amp;gt; TCP/IP는 인터넷 기반이므로.&lt;br /&gt;
// AF_INET/PF_INET -&amp;gt; 인터넷 프로토콜 체계 사용.&lt;br /&gt;
&lt;br /&gt;
 데이터를 Big-Endian으로 변환 시켜주는 체계.&lt;br /&gt;
 &lt;br /&gt;
 unsigned short integer 변환 (2바이트 크기)&lt;br /&gt;
   htons(): host-to-network 바이트 변환 (Big-Endian으로 변환)&lt;br /&gt;
   ntohs(): network-to-host 바이트 변환 (해당 시스템)&lt;br /&gt;
 &lt;br /&gt;
 unsigned long integer 변환 (4바이트 크기)&lt;br /&gt;
   htonl(): host-to-network 바이트 변환 (Big-Endian으로 변환)&lt;br /&gt;
   ntohl(): network-to-host 바이트 변환 (해당 시스템)&lt;br /&gt;
 &lt;br /&gt;
  ※ 왜 우리는 데이터를 Big-Endian으로 변환 시켜주어야할까?&lt;br /&gt;
  ※ 그렇다면 우리가 전송하는 데이터 모두 Big-Endian으로 변환 시켜주어야할까?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== sin_port: ===&lt;br /&gt;
NULL		: 임의의 포트를 할당한다. client에서 사용한다.&lt;br /&gt;
// u_short sin_port 은 Big-Endian을 사용한다.&lt;br /&gt;
// 따라서 Little_Endian을 사용하는 시스템에서는 Big-Endian으로 바꿔줘야한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== sin_addr: ===&lt;br /&gt;
INADDR_ANY	: 자기 자신의 주소를 할당한다. (== 0)&lt;br /&gt;
// sin_addr은 인터넷 주소를 담고 있으므로 4 바이트가 필요하다.&lt;br /&gt;
cf. 도메인 네임을 통한 연결은 설명하지 않겠습니다.&lt;br /&gt;
&lt;br /&gt;
 struct in_addr {&lt;br /&gt;
 	unsigned long s_addr;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
 	inet_addr(): 주소를 long형으로 계산하고 htonl()를 사용해 Big-Endian으로 변환 후 값을 return 한다.&lt;br /&gt;
 		// 165.194.27.129 -&amp;amp;gt; 165*256*256*256 + 194*256*256 + 27*256 + 129 = 2780961665&lt;br /&gt;
 		// 2780961665 의 값은 Little-Endian 체계에서는 811BC2A5이다.&lt;br /&gt;
 		// 이것을 A5C21B81로 바꿔 저장한다.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 예제 )&lt;br /&gt;
 	ina.sin_addr.s_addr = inet_addr(&amp;quot;127.0.0.1&amp;quot;);&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
=== sin_zero[[&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;8&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;]]: ===&lt;br /&gt;
// sin_zero 배열은 항상 0으로 채워져 있어야한다.&lt;br /&gt;
&lt;br /&gt;
 ※ 왜 sin_zero가 만들어졌을까요?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 예제)&lt;br /&gt;
 &lt;br /&gt;
 #define PORT 9999&lt;br /&gt;
 #define SERVER_IP &amp;quot;165.194.27.129&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 main(){&lt;br /&gt;
 struct sockaddr_in ina;&lt;br /&gt;
 &lt;br /&gt;
 	memset((struct sockaddr *)&amp;amp;amp;ina, 0, sizeof(struct sockaddr));&lt;br /&gt;
 	// sin_zero를 0으로 채운다.&lt;br /&gt;
 	// bzero라는 함수도 있지만 초기에 0으로 채우는 것이 편하다.&lt;br /&gt;
 	// bzero(&amp;amp;amp;(ina.sin_zero), 8);&lt;br /&gt;
 &lt;br /&gt;
 	ina.sin_port = htons(PORT);			// PORT의 경우 정수를 넣어야한다.&lt;br /&gt;
 &lt;br /&gt;
 	ina.sin_addr.s_addr = inet_addr(SERVER_IP);	// 클라이언트의 경우&lt;br /&gt;
 							// SERVER_IP의 경우 문자열 포인터를 넣어야한다.&lt;br /&gt;
 		// 165.194.27.129 -&amp;amp;gt; 165*256*256*256 + 194*256*256 + 27*256 + 129 = 2780961665 로 저장이 된다.&lt;br /&gt;
 	// ina.sin_addr.s_addr = INADDR_ANY;		// 서버의 경우&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Server 가 될 프로그램에 필요한 함수 =&lt;br /&gt;
&amp;amp;#91;&amp;amp;#91;HTML(&amp;amp;lt;img src=&amp;quot;http://zeropage.org/pub/upload/sock.gif&amp;quot;&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;)&amp;amp;#93;&amp;amp;#93;&lt;br /&gt;
== Bind - socket과 네트워크 정보를 연결하는 Bind!!! ==&lt;br /&gt;
 #include &amp;amp;lt;sys/socket.h&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 int bind(int sockfd, struct sockaddr *myaddr, int addrlen);&lt;br /&gt;
 // 성공 시 0, 실패 시 -1 리턴&lt;br /&gt;
&lt;br /&gt;
 예제)&lt;br /&gt;
 &lt;br /&gt;
 	if( bind(sockfd, (struct sockaddr *)&amp;amp;amp;ina, sizeof(struct sockaddr) == -1 )&lt;br /&gt;
 		fprintf(stderr, &amp;quot;bind에서 에러가 났습니다.n&amp;quot;)), exit(1);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== listen - client의 요청을 기다린다! ==&lt;br /&gt;
 #include &amp;amp;lt;sys/socket.h&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 int listen(int sockfd, int backlog);&lt;br /&gt;
 // 성공 시 0, 실패 시 -1 리턴&lt;br /&gt;
 &lt;br /&gt;
 // backlog는 서버에 접속할 사람의 대기자 Maximum을 의미한다.&lt;br /&gt;
&lt;br /&gt;
 예제)&lt;br /&gt;
 &lt;br /&gt;
 #deinfe BACKLOG 5		// 대기자가 5명이 넘으면 접속 불가능하다.&lt;br /&gt;
 &lt;br /&gt;
 	if( listen(sockfd, BACKLOG) == -1 )&lt;br /&gt;
 		fprintf(stderr, &amp;quot;listen에서 에러가 났습니다.n&amp;quot;), exit(1);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== accpet - client의 요청을 받아들인다! ==&lt;br /&gt;
 #include &amp;amp;lt;sys/socket.h&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 int accept(int sockfd, struct sockaddr *addr, int *addrlen);&lt;br /&gt;
 // 성공 시 파일 디스크립터, 실패 시 -1 리턴&lt;br /&gt;
 // *addrlen에 주의. accept는 client의 인터넷 정보가 들어오면 addrlen의 크기(struct sockaddr_in의 크기)와&lt;br /&gt;
 // 비교를 하여 크다면 받아들이지 않고, 작다면 크기를 줄일것이다.&lt;br /&gt;
// child process를 생성해 다중 연결을 하는 것은 설명하지 않습니다.&lt;br /&gt;
&lt;br /&gt;
 예제 )&lt;br /&gt;
 &lt;br /&gt;
 // int server_sock, client_sock&lt;br /&gt;
 // struct sockaddr_in server_addr, client_sock&lt;br /&gt;
 &lt;br /&gt;
 int sizeof_sockaddr_in;&lt;br /&gt;
 &lt;br /&gt;
 	sizeof_sockaddr_in = sizeof(struct sockaddr_in);&lt;br /&gt;
 &lt;br /&gt;
 	client_sock = accept(server_sock, (struct sockaddr *)&amp;amp;amp;client_addr, &amp;amp;amp;sizeof_sockaddr_in);&lt;br /&gt;
 &lt;br /&gt;
 	if( client_sock == -1 )&lt;br /&gt;
 		fprintf(stderr, &amp;quot;accept에러. client가 서버에 접속 할 수 없습니다.&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Client 가 될 프로그램에 필요한 함수 =&lt;br /&gt;
&amp;amp;#91;&amp;amp;#91;HTML(&amp;amp;lt;img src=&amp;quot;http://zeropage.org/pub/upload/sock.gif&amp;quot;&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;)&amp;amp;#93;&amp;amp;#93;&lt;br /&gt;
== connect - Server에 연결한다. ==&lt;br /&gt;
 ※ connect와 server 함수중 어떠한 함수가 닮았는지 이야기 해보자.&lt;br /&gt;
 ※ 이를 이야기 해보고 client의 프로그램의 네트워크 정보(struct sockaddr_in)에는 무엇이 들어가야하는지 이야기해보자.&lt;br /&gt;
 #include &amp;amp;lt;sys/types.h&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;sys/socket.h&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);&lt;br /&gt;
 // 성공 시 0, 실패 시 -1 리턴&lt;br /&gt;
&lt;br /&gt;
 예제 )&lt;br /&gt;
 &lt;br /&gt;
 	if( connect(client_sock, (struct sockaddr *)&amp;amp;amp;client_addr, sizeof(struct sockaddr)) == -1 )&lt;br /&gt;
 		fprintf(stderr, &amp;quot;서버에 connect 할 수 없습니다.&amp;quot;), exit(1);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 정리에 필요한 함수 =&lt;br /&gt;
&lt;br /&gt;
== close 파일을 닫는다. ==&lt;br /&gt;
 #include &amp;amp;lt;unistd.h&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 int close(int fildes);&lt;br /&gt;
 &lt;br /&gt;
 // 성공 시 0, 실패 시 -1 리턴&lt;br /&gt;
&lt;br /&gt;
 예제 )&lt;br /&gt;
 &lt;br /&gt;
 	close(sockfd);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= server/client 공통 - 입출력 함수 =&lt;br /&gt;
&amp;amp;#91;&amp;amp;#91;HTML(&amp;amp;lt;img src=&amp;quot;http://zeropage.org/pub/upload/sock.gif&amp;quot;&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;)&amp;amp;#93;&amp;amp;#93;&lt;br /&gt;
== send/write - 상대에게 데이터를 보낸다. ==&lt;br /&gt;
 #include &amp;amp;lt;unistd.h&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 ssize_t send(int fildes, const void * buf, size_t nbytes, unsigned int flags);&lt;br /&gt;
 ssize_t write(int fildes, const void * buf, size_t nbytes);&lt;br /&gt;
 &lt;br /&gt;
 // 성공 시 전달 한 바이트 수, 실패 시 -1 리턴&lt;br /&gt;
&lt;br /&gt;
 예제 )&lt;br /&gt;
 &lt;br /&gt;
 char buf1[] = &amp;quot;Hello, World!&amp;quot;;&lt;br /&gt;
 char *buf2 = &amp;quot;Hello, World!&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 	if( send(client_sock, buf1, sizeof(buf), 0) == -1 )&lt;br /&gt;
 		fprintf(stderr, &amp;quot;send error&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 	if( write(client_sock, buf2, strlen(buf2)) == -1 )&lt;br /&gt;
 		fprintf(stderr, &amp;quot;write error&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 // 타 시스템으로 이식을 위해 되도록 send를 사용하는 것이 좋다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== recv/read - 상대에게 데이터를 받는다. ==&lt;br /&gt;
 #include &amp;amp;lt;unistd.h&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 ssize_t recv(int fildes, void *buf, size_t nbytes, unsigned int flags);&lt;br /&gt;
 ssize_t read(int fildes, void *buf, size_t nbytes);&lt;br /&gt;
 &lt;br /&gt;
 // 성공 시 수신 한 바이트 수(단 EOF만나면 0), 실패 시 -1 리턴&lt;br /&gt;
&lt;br /&gt;
 예제 )&lt;br /&gt;
 &lt;br /&gt;
 char buf1[200];&lt;br /&gt;
 char buf2[200];&lt;br /&gt;
 int str_len;&lt;br /&gt;
 &lt;br /&gt;
 	str_len = recv(sockfd, buf1, sizeof(buf1), 0);&lt;br /&gt;
 	str_len = read(sockfd, buf2, sizeof(buf2));&lt;br /&gt;
 &lt;br /&gt;
 	buf1[str_len] = 0;			// 배열의 끝을 설정해준다. 하지 않으면 뒤의 쓰레기 값까지 접근된다.&lt;br /&gt;
 	buf1[str_len] = 0;&lt;br /&gt;
 &lt;br /&gt;
 // 타 시스템으로 이식을 위해 되도록 send를 사용하는 것이 좋다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= ※ 윈도우 기반에서는... =&lt;br /&gt;
 ◎ Visual C++에서 빈 소스 파일 하나를 연다.&lt;br /&gt;
 Project -&amp;amp;gt; Setting -&amp;amp;gt; LINK 메뉴 -&amp;amp;gt; Object/library modules: 의 끝부분에 ws2_32.lib 를 추가한다.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ◎ #include &amp;amp;lt;sys/socket.h&amp;amp;gt;		-&amp;amp;gt;	#include &amp;amp;lt;winsock2.h&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 ◎ UNIX 체계에서 사용하던 함수들의 헤더파일이 Windows 기반에서는 존재하지 않을 수도 있다.&lt;br /&gt;
 &lt;br /&gt;
 ◎ struct sockaddr_in		-&amp;amp;gt;	SOCKADDR_IN&lt;br /&gt;
 &lt;br /&gt;
 ◎ int sockfd;			-&amp;amp;gt;	SOCKET sockfd;&lt;br /&gt;
 // 소켓 디스크립터			// 소켓 핸들&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ◎ main() 함수 내부에&lt;br /&gt;
 &lt;br /&gt;
 WSADATA wsaDATA;		// 추가. WSADATA형의 변수를 선언한다.&lt;br /&gt;
 &lt;br /&gt;
 if( WSAStartup(MAKEWORD(2,2), &amp;amp;amp;wsaData) != 0)&lt;br /&gt;
 	fprintf(stderr, &amp;quot;WSAStartup Error&amp;quot;), exit(1);&lt;br /&gt;
 				// 추가. WSAStartup() 은 socket의 버젼을 ws2_32 라이브러리에 전달한다.&lt;br /&gt;
 // 프로그램이 끝날 때, 항상 WSACleanup()으로 리소스를 해제해야한다.&lt;br /&gt;
&lt;br /&gt;
 예제)&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;amp;lt;winsock2.h&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 main(){&lt;br /&gt;
 WSADATA wsaDATA;&lt;br /&gt;
 &lt;br /&gt;
 SOCKET sockfd;&lt;br /&gt;
 // UNIX 기반의 int sockfd;&lt;br /&gt;
 SOCKADDR_IN ina;&lt;br /&gt;
 // UNIX 기반의 struct sockaddr_in ina;&lt;br /&gt;
 &lt;br /&gt;
 if( WSAStartup(MAKEWORD(2,2), &amp;amp;amp;wsaData) != 0)&lt;br /&gt;
 	fprintf(stderr, &amp;quot;WSAStartup Error&amp;quot;), exit(1);&lt;br /&gt;
 &lt;br /&gt;
 ... 내용&lt;br /&gt;
 &lt;br /&gt;
 WSACleanup();&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= server 예제 =&lt;br /&gt;
&lt;br /&gt;
 #include &amp;amp;lt;stdio.h&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;winsock2.h&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #define PORT 9999		// 서버의 9999번 포트를 연다&lt;br /&gt;
 #define BACKLOG 5&lt;br /&gt;
 &lt;br /&gt;
 void error(char *buf)&lt;br /&gt;
 {&lt;br /&gt;
 	puts(buf), exit(1);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 main(){&lt;br /&gt;
 WSADATA wsaData;&lt;br /&gt;
 &lt;br /&gt;
 SOCKET server_sock;		// 서버의 socket을 생성&lt;br /&gt;
 SOCKET client_sock;		// 클라이언트의 socket을 생성&lt;br /&gt;
 &lt;br /&gt;
 SOCKADDR_IN server_addr;	// 네트워크의 정보를 담을 structure 생성.&lt;br /&gt;
 SOCKADDR_IN client_addr;&lt;br /&gt;
 &lt;br /&gt;
 int sizeof_sockaddr_in;&lt;br /&gt;
 char msg[] = &amp;quot;Hello, World!&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 	if( WSAStartup(MAKEWORD(2,2), &amp;amp;amp;wsaData) == -1 )&lt;br /&gt;
 		error(&amp;quot;WSAStartup Error&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 // socket 설정&lt;br /&gt;
 // 프로그래머는 이것을 통해 네트워크와 대화를 한다.&lt;br /&gt;
 &lt;br /&gt;
 	server_sock = socket(AF_INET, SOCK_STREAM, 0);&lt;br /&gt;
 	if( server_sock == -1 )&lt;br /&gt;
 		error(&amp;quot;server socket error&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 // 네트웍 정보 설정&lt;br /&gt;
 // 이것은 프로그램이 socket과 연결할 정보를 담고있다.&lt;br /&gt;
 &lt;br /&gt;
 	memset((SOCKADDR_IN *)&amp;amp;amp;server_addr, 0, sizeof(SOCKADDR_IN));&lt;br /&gt;
 	// struct sockaddr_in	-&amp;amp;gt;	SOCKADDR_IN&lt;br /&gt;
 	server_addr.sin_family = AF_INET;&lt;br /&gt;
 	server_addr.sin_addr.s_addr = INADDR_ANY;	// 자신의 주소로 설정한다.&lt;br /&gt;
 	server_addr.sin_port = htons(PORT);&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 // socket과 네트웍 정보를 bind()로 연결한다.&lt;br /&gt;
 &lt;br /&gt;
 	if( bind(server_sock, (sockaddr *)&amp;amp;amp;server_addr, sizeof(SOCKADDR_IN)) == -1 )&lt;br /&gt;
 		error(&amp;quot;bind() 에러&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 // 준비는 끝났다!&lt;br /&gt;
 // listen()으로 client의 연결 요청을 기다리자.&lt;br /&gt;
 // client의 요청이 올 때 까지 서버는 여기서 기다린다.&lt;br /&gt;
 &lt;br /&gt;
 	if( listen(server_sock, BACKLOG) == -1 )&lt;br /&gt;
 		error(&amp;quot;listen() 에러&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 // client의 요청이 오면 server는 accept() 함수로 요청을 받아들인다.&lt;br /&gt;
 // client와의 데이터 전송을 위해 client 소켓 디스크립터가 필요하다.&lt;br /&gt;
 &lt;br /&gt;
 	sizeof_sockaddr_in = sizeof(SOCKADDR_IN);&lt;br /&gt;
 &lt;br /&gt;
 	while(1)&lt;br /&gt;
 	{&lt;br /&gt;
 		client_sock = accept(server_sock, (sockaddr *)&amp;amp;amp;client_addr, &amp;amp;amp;sizeof_sockaddr_in);&lt;br /&gt;
 		if( client_sock == -1 )&lt;br /&gt;
 		{&lt;br /&gt;
 			// accept가 실패하면 while의 처음으로 돌아가 다시 client를 기다린다.&lt;br /&gt;
 			fprintf(stderr, &amp;quot;accept() 에러&amp;quot;);&lt;br /&gt;
 			continue;&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		send(client_sock, msg, sizeof(msg), 0);&lt;br /&gt;
 &lt;br /&gt;
 		//close(client_sock);&lt;br /&gt;
 		WSACleanup();&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 	exit(0);&lt;br /&gt;
 	// exit로 종료를 하면 모든 파일 디스크립터를 자동으로 닫고 종료한다.&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ※ 컴퓨터는 하나의 처리밖에 하지 못한다. 따라서 위의 소스는 하나의 client밖에 받아 들일 수 밖에 없다.&lt;br /&gt;
    어떻게 하면 여러 client를 동시에 받아들일 수 있을까?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 실습 =&lt;br /&gt;
 위의 server 에 접속 하는 client 프로그램을 짜고, Server가 보내는 메세지인 &amp;quot;Hello, World!&amp;quot;란 문장을 clinet 화면에 출력하도록 한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 참고 사이트 =&lt;br /&gt;
An Introduction to Socket Programming : [http://www.uwo.ca/its/doc/courses/notes/socket/]&lt;br /&gt;
&lt;br /&gt;
Beej&amp;#039;s Guide to Network Programming : [http://www.ecst.csuchico.edu/~beej/guide/net/html/]&lt;br /&gt;
&lt;br /&gt;
Beej&amp;#039;s 번역판 : 서치엔진에서 찾아보세요. (무책임)&lt;br /&gt;
&lt;br /&gt;
Socket Programming in Python : [http://www.amk.ca/python/howto/sockets/]&lt;br /&gt;
&lt;br /&gt;
IPv6 Socket Programming : [http://www.joinc.co.kr/modules/moniwiki/wiki.php/article_IPv6_Programing?action=print2]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[프로그래밍분류]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>