⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000004.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 5 页
字号:
the&nbsp;order&nbsp;&quot;1,&nbsp;2&quot;&nbsp;at&nbsp;the&nbsp;opposite&nbsp;end.&nbsp;They&nbsp;will&nbsp;also&nbsp;be&nbsp;error&nbsp;free.&nbsp;Any&nbsp;<BR>errors&nbsp;you&nbsp;do&nbsp;encounter&nbsp;are&nbsp;figments&nbsp;of&nbsp;your&nbsp;own&nbsp;deranged&nbsp;mind,&nbsp;and&nbsp;are&nbsp;not&nbsp;<BR>to&nbsp;be&nbsp;discussed&nbsp;here.&nbsp;<BR>What&nbsp;uses&nbsp;stream&nbsp;sockets?&nbsp;Well,&nbsp;you&nbsp;may&nbsp;have&nbsp;heard&nbsp;of&nbsp;the&nbsp;telnet&nbsp;<BR>application,&nbsp;yes?&nbsp;It&nbsp;uses&nbsp;stream&nbsp;sockets.&nbsp;All&nbsp;the&nbsp;characters&nbsp;you&nbsp;type&nbsp;need&nbsp;<BR>to&nbsp;arrive&nbsp;in&nbsp;the&nbsp;same&nbsp;order&nbsp;you&nbsp;type&nbsp;them,&nbsp;right?&nbsp;Also,&nbsp;WWW&nbsp;browsers&nbsp;use&nbsp;the&nbsp;<BR>&nbsp;<BR>HTTP&nbsp;protocol&nbsp;which&nbsp;uses&nbsp;stream&nbsp;sockets&nbsp;to&nbsp;get&nbsp;pages.&nbsp;Indeed,&nbsp;if&nbsp;you&nbsp;telnet&nbsp;<BR>to&nbsp;a&nbsp;WWW&nbsp;site&nbsp;on&nbsp;port&nbsp;80,&nbsp;and&nbsp;type&nbsp;&quot;GET&nbsp;pagename&quot;,&nbsp;it'll&nbsp;dump&nbsp;the&nbsp;HTML&nbsp;back&nbsp;<BR>at&nbsp;you!&nbsp;<BR>How&nbsp;do&nbsp;stream&nbsp;sockets&nbsp;achieve&nbsp;this&nbsp;high&nbsp;level&nbsp;of&nbsp;data&nbsp;transmission&nbsp;quality?&nbsp;<BR>They&nbsp;use&nbsp;a&nbsp;protocol&nbsp;called&nbsp;&quot;The&nbsp;Transmission&nbsp;Control&nbsp;Protocol&quot;,&nbsp;otherwise&nbsp;<BR>known&nbsp;as&nbsp;&quot;TCP&quot;&nbsp;(see&nbsp;RFC-793&nbsp;for&nbsp;extremely&nbsp;detailed&nbsp;info&nbsp;on&nbsp;TCP.)&nbsp;TCP&nbsp;makes&nbsp;<BR>sure&nbsp;your&nbsp;data&nbsp;arrives&nbsp;sequentially&nbsp;and&nbsp;error-free.&nbsp;You&nbsp;may&nbsp;have&nbsp;heard&nbsp;&quot;TCP&quot;&nbsp;<BR>&nbsp;<BR>before&nbsp;as&nbsp;the&nbsp;better&nbsp;half&nbsp;of&nbsp;&quot;TCP/IP&quot;&nbsp;where&nbsp;&quot;IP&quot;&nbsp;stands&nbsp;for&nbsp;&quot;Internet&nbsp;<BR>Protocol&quot;&nbsp;(see&nbsp;RFC-791.)&nbsp;IP&nbsp;deals&nbsp;with&nbsp;Internet&nbsp;routing&nbsp;only.&nbsp;<BR>Cool.&nbsp;What&nbsp;about&nbsp;Datagram&nbsp;sockets?&nbsp;Why&nbsp;are&nbsp;they&nbsp;called&nbsp;connectionless?&nbsp;What&nbsp;<BR>is&nbsp;the&nbsp;deal,&nbsp;here,&nbsp;anyway?&nbsp;Why&nbsp;are&nbsp;they&nbsp;unreliable?&nbsp;Well,&nbsp;here&nbsp;are&nbsp;some&nbsp;<BR>facts:&nbsp;if&nbsp;you&nbsp;send&nbsp;a&nbsp;datagram,&nbsp;it&nbsp;may&nbsp;arrive.&nbsp;It&nbsp;may&nbsp;arrive&nbsp;out&nbsp;of&nbsp;order.&nbsp;If&nbsp;<BR>&nbsp;<BR>it&nbsp;arrives,&nbsp;the&nbsp;data&nbsp;within&nbsp;the&nbsp;packet&nbsp;will&nbsp;be&nbsp;error-free.&nbsp;<BR>Datagram&nbsp;sockets&nbsp;also&nbsp;use&nbsp;IP&nbsp;for&nbsp;routing,&nbsp;but&nbsp;they&nbsp;don't&nbsp;use&nbsp;TCP;&nbsp;they&nbsp;use&nbsp;<BR>the&nbsp;&quot;User&nbsp;Datagram&nbsp;Protocol&quot;,&nbsp;or&nbsp;&quot;UDP&quot;&nbsp;(see&nbsp;RFC-768.)&nbsp;<BR>Why&nbsp;are&nbsp;they&nbsp;connectionless?&nbsp;Well,&nbsp;basically,&nbsp;it's&nbsp;because&nbsp;you&nbsp;don't&nbsp;have&nbsp;to&nbsp;<BR>&nbsp;<BR>maintain&nbsp;an&nbsp;open&nbsp;connection&nbsp;as&nbsp;you&nbsp;do&nbsp;with&nbsp;stream&nbsp;sockets.&nbsp;You&nbsp;just&nbsp;build&nbsp;a&nbsp;<BR>packet,&nbsp;slap&nbsp;an&nbsp;IP&nbsp;header&nbsp;on&nbsp;it&nbsp;with&nbsp;destination&nbsp;information,&nbsp;and&nbsp;send&nbsp;it&nbsp;<BR>out.&nbsp;No&nbsp;connection&nbsp;needed.&nbsp;They&nbsp;are&nbsp;generally&nbsp;used&nbsp;for&nbsp;packet-by-packet&nbsp;<BR>transfers&nbsp;of&nbsp;information.&nbsp;Sample&nbsp;applications:&nbsp;tftp,&nbsp;bootp,&nbsp;etc.&nbsp;<BR>&quot;Enough!&quot;&nbsp;you&nbsp;may&nbsp;scream.&nbsp;&quot;How&nbsp;do&nbsp;these&nbsp;programs&nbsp;even&nbsp;work&nbsp;if&nbsp;datagrams&nbsp;<BR>might&nbsp;get&nbsp;lost?!&quot;&nbsp;Well,&nbsp;my&nbsp;human&nbsp;friend,&nbsp;each&nbsp;has&nbsp;it's&nbsp;own&nbsp;protocol&nbsp;on&nbsp;top&nbsp;<BR>of&nbsp;UDP.&nbsp;For&nbsp;example,&nbsp;the&nbsp;tftp&nbsp;protocol&nbsp;says&nbsp;that&nbsp;for&nbsp;each&nbsp;packet&nbsp;that&nbsp;gets&nbsp;<BR>sent,&nbsp;the&nbsp;recipient&nbsp;has&nbsp;to&nbsp;send&nbsp;back&nbsp;a&nbsp;packet&nbsp;that&nbsp;says,&nbsp;&quot;I&nbsp;got&nbsp;it!&quot;&nbsp;(an&nbsp;<BR>&quot;ACK&quot;&nbsp;packet.)&nbsp;If&nbsp;the&nbsp;sender&nbsp;of&nbsp;the&nbsp;original&nbsp;packet&nbsp;gets&nbsp;no&nbsp;reply&nbsp;in,&nbsp;say,&nbsp;<BR>five&nbsp;seconds,&nbsp;he'll&nbsp;re-transmit&nbsp;the&nbsp;packet&nbsp;until&nbsp;he&nbsp;finally&nbsp;gets&nbsp;an&nbsp;ACK.&nbsp;<BR>This&nbsp;acknowledgment&nbsp;procedure&nbsp;is&nbsp;very&nbsp;important&nbsp;when&nbsp;implementing&nbsp;SOCK_DGRAM&nbsp;<BR>&nbsp;<BR>applications.&nbsp;<BR>----------------------------------------------------------------------------&nbsp;<BR>&nbsp;<BR>3.&nbsp;Low&nbsp;level&nbsp;Nonsense&nbsp;and&nbsp;Network&nbsp;Theory&nbsp;<BR>Since&nbsp;I&nbsp;just&nbsp;mentioned&nbsp;layering&nbsp;of&nbsp;protocols,&nbsp;it's&nbsp;time&nbsp;to&nbsp;talk&nbsp;about&nbsp;how&nbsp;<BR>networks&nbsp;really&nbsp;work,&nbsp;and&nbsp;to&nbsp;show&nbsp;some&nbsp;examples&nbsp;of&nbsp;how&nbsp;SOCK_DGRAM&nbsp;packets&nbsp;<BR>are&nbsp;built.&nbsp;Practically,&nbsp;you&nbsp;can&nbsp;probably&nbsp;skip&nbsp;this&nbsp;section.&nbsp;It's&nbsp;good&nbsp;<BR>background,&nbsp;however.&nbsp;<BR>&nbsp;[Encapsulated&nbsp;Protocols&nbsp;Image]&nbsp;&nbsp;Hey,&nbsp;kids,&nbsp;it's&nbsp;time&nbsp;to&nbsp;learn&nbsp;about&nbsp;Data&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Encapsulation!&nbsp;This&nbsp;is&nbsp;very&nbsp;very&nbsp;important.&nbsp;<BR>&nbsp;<BR>It's&nbsp;so&nbsp;important&nbsp;that&nbsp;you&nbsp;might&nbsp;just&nbsp;learn&nbsp;about&nbsp;it&nbsp;if&nbsp;you&nbsp;take&nbsp;the&nbsp;<BR>networks&nbsp;course&nbsp;here&nbsp;at&nbsp;Chico&nbsp;State&nbsp;;-).&nbsp;Basically,&nbsp;it&nbsp;says&nbsp;this:&nbsp;a&nbsp;packet&nbsp;<BR>is&nbsp;born,&nbsp;the&nbsp;packet&nbsp;is&nbsp;wrapped&nbsp;(&quot;encapsulated&quot;)&nbsp;in&nbsp;a&nbsp;header&nbsp;(and&nbsp;maybe&nbsp;<BR>footer)&nbsp;by&nbsp;the&nbsp;first&nbsp;protocol&nbsp;(say,&nbsp;the&nbsp;TFTP&nbsp;protocol),&nbsp;then&nbsp;the&nbsp;whole&nbsp;thing&nbsp;<BR>&nbsp;<BR>(TFTP&nbsp;header&nbsp;included)&nbsp;is&nbsp;encapsulated&nbsp;again&nbsp;by&nbsp;the&nbsp;next&nbsp;protocol&nbsp;(say,&nbsp;<BR>UDP),&nbsp;then&nbsp;again&nbsp;by&nbsp;the&nbsp;next&nbsp;(IP),&nbsp;then&nbsp;again&nbsp;by&nbsp;the&nbsp;final&nbsp;protocol&nbsp;on&nbsp;the&nbsp;<BR>hardware&nbsp;(physical)&nbsp;layer&nbsp;(say,&nbsp;Ethernet).&nbsp;<BR>When&nbsp;another&nbsp;computer&nbsp;receives&nbsp;the&nbsp;packet,&nbsp;the&nbsp;hardware&nbsp;strips&nbsp;the&nbsp;Ethernet&nbsp;<BR>header,&nbsp;the&nbsp;kernel&nbsp;strips&nbsp;the&nbsp;IP&nbsp;and&nbsp;UDP&nbsp;headers,&nbsp;the&nbsp;TFTP&nbsp;program&nbsp;strips&nbsp;<BR>the&nbsp;TFTP&nbsp;header,&nbsp;and&nbsp;it&nbsp;finally&nbsp;has&nbsp;the&nbsp;data.&nbsp;<BR>Now&nbsp;I&nbsp;can&nbsp;finally&nbsp;talk&nbsp;about&nbsp;the&nbsp;infamous&nbsp;Layered&nbsp;Network&nbsp;Model.&nbsp;This&nbsp;<BR>Network&nbsp;Model&nbsp;describes&nbsp;a&nbsp;system&nbsp;of&nbsp;network&nbsp;functionality&nbsp;that&nbsp;has&nbsp;many&nbsp;<BR>advantages&nbsp;over&nbsp;other&nbsp;models.&nbsp;For&nbsp;instance,&nbsp;you&nbsp;can&nbsp;write&nbsp;sockets&nbsp;programs&nbsp;<BR>that&nbsp;are&nbsp;exactly&nbsp;the&nbsp;same&nbsp;without&nbsp;caring&nbsp;how&nbsp;the&nbsp;data&nbsp;is&nbsp;physically&nbsp;<BR>transmitted&nbsp;(serial,&nbsp;thin&nbsp;Ethernet,&nbsp;AUI,&nbsp;whatever)&nbsp;because&nbsp;programs&nbsp;on&nbsp;lower&nbsp;<BR>&nbsp;<BR>levels&nbsp;deal&nbsp;with&nbsp;it&nbsp;for&nbsp;you.&nbsp;The&nbsp;actual&nbsp;network&nbsp;hardware&nbsp;and&nbsp;topology&nbsp;is&nbsp;<BR>transparent&nbsp;to&nbsp;the&nbsp;socket&nbsp;programmer.&nbsp;<BR>Without&nbsp;any&nbsp;further&nbsp;ado,&nbsp;I'll&nbsp;present&nbsp;the&nbsp;layers&nbsp;of&nbsp;the&nbsp;full-blown&nbsp;model.&nbsp;<BR>Remember&nbsp;this&nbsp;for&nbsp;network&nbsp;class&nbsp;exams:&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;Application&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;Presentation&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;Session&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;Transport&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;Network&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;Data&nbsp;Link&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;Physical&nbsp;<BR>The&nbsp;Physical&nbsp;Layer&nbsp;is&nbsp;the&nbsp;hardware&nbsp;(serial,&nbsp;Ethernet,&nbsp;etc.).&nbsp;The&nbsp;Application&nbsp;<BR>&nbsp;<BR>Layer&nbsp;is&nbsp;just&nbsp;about&nbsp;as&nbsp;far&nbsp;from&nbsp;the&nbsp;physical&nbsp;layer&nbsp;as&nbsp;you&nbsp;can&nbsp;imagine--it's&nbsp;<BR>the&nbsp;place&nbsp;where&nbsp;users&nbsp;interact&nbsp;with&nbsp;the&nbsp;network.&nbsp;<BR>Now,&nbsp;this&nbsp;model&nbsp;is&nbsp;so&nbsp;general&nbsp;you&nbsp;could&nbsp;probably&nbsp;use&nbsp;it&nbsp;as&nbsp;an&nbsp;automobile&nbsp;<BR>repair&nbsp;guide&nbsp;if&nbsp;you&nbsp;really&nbsp;wanted&nbsp;to.&nbsp;A&nbsp;layered&nbsp;model&nbsp;more&nbsp;consistent&nbsp;with&nbsp;<BR>Unix&nbsp;might&nbsp;be:&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;Application&nbsp;Layer&nbsp;(telnet,&nbsp;ftp,&nbsp;etc.)&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;Host-to-Host&nbsp;Transport&nbsp;Layer&nbsp;(TCP,&nbsp;UDP)&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;Internet&nbsp;Layer&nbsp;(IP&nbsp;and&nbsp;routing)&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;Network&nbsp;Access&nbsp;Layer&nbsp;(was&nbsp;Network,&nbsp;Data&nbsp;Link,&nbsp;and&nbsp;Physical)&nbsp;<BR>At&nbsp;this&nbsp;point&nbsp;in&nbsp;time,&nbsp;you&nbsp;can&nbsp;probably&nbsp;see&nbsp;how&nbsp;these&nbsp;layers&nbsp;correspond&nbsp;to&nbsp;<BR>the&nbsp;encapsulation&nbsp;of&nbsp;the&nbsp;original&nbsp;data.&nbsp;<BR>See&nbsp;how&nbsp;much&nbsp;work&nbsp;there&nbsp;is&nbsp;in&nbsp;building&nbsp;a&nbsp;simple&nbsp;packet?&nbsp;Jeez!&nbsp;And&nbsp;you&nbsp;have&nbsp;<BR>to&nbsp;type&nbsp;in&nbsp;the&nbsp;packet&nbsp;headers&nbsp;yourself&nbsp;using&nbsp;&quot;cat&quot;!&nbsp;Just&nbsp;kidding.&nbsp;All&nbsp;you&nbsp;<BR>have&nbsp;to&nbsp;do&nbsp;for&nbsp;stream&nbsp;sockets&nbsp;is&nbsp;send()&nbsp;the&nbsp;data&nbsp;out.&nbsp;All&nbsp;you&nbsp;have&nbsp;to&nbsp;do&nbsp;for&nbsp;<BR>&nbsp;<BR>datagram&nbsp;sockets&nbsp;is&nbsp;encapsulate&nbsp;the&nbsp;packet&nbsp;in&nbsp;the&nbsp;method&nbsp;of&nbsp;your&nbsp;choosing&nbsp;<BR>and&nbsp;sendto()&nbsp;it&nbsp;out.&nbsp;The&nbsp;kernel&nbsp;builds&nbsp;the&nbsp;Transport&nbsp;Layer&nbsp;and&nbsp;Internet&nbsp;<BR>Layer&nbsp;on&nbsp;for&nbsp;you&nbsp;and&nbsp;the&nbsp;hardware&nbsp;does&nbsp;the&nbsp;Network&nbsp;Access&nbsp;Layer.&nbsp;Ah,&nbsp;modern&nbsp;<BR>technology.&nbsp;<BR>So&nbsp;ends&nbsp;our&nbsp;brief&nbsp;foray&nbsp;into&nbsp;network&nbsp;theory.&nbsp;Oh&nbsp;yes,&nbsp;I&nbsp;forgot&nbsp;to&nbsp;tell&nbsp;you&nbsp;<BR>everything&nbsp;I&nbsp;wanted&nbsp;to&nbsp;say&nbsp;about&nbsp;routing:&nbsp;nothing!&nbsp;That's&nbsp;right,&nbsp;I'm&nbsp;not&nbsp;<BR>going&nbsp;to&nbsp;talk&nbsp;about&nbsp;it&nbsp;at&nbsp;all.&nbsp;The&nbsp;router&nbsp;strips&nbsp;the&nbsp;packet&nbsp;to&nbsp;the&nbsp;IP&nbsp;<BR>header,&nbsp;consults&nbsp;its&nbsp;routing&nbsp;table,&nbsp;blah&nbsp;blah&nbsp;blah.&nbsp;Check&nbsp;out&nbsp;the&nbsp;IP&nbsp;RFC&nbsp;if&nbsp;<BR>you&nbsp;really&nbsp;really&nbsp;care.&nbsp;If&nbsp;you&nbsp;never&nbsp;learn&nbsp;about&nbsp;it,&nbsp;well,&nbsp;you'll&nbsp;live.&nbsp;<BR>----------------------------------------------------------------------------&nbsp;<BR>&nbsp;<BR>4.&nbsp;structs&nbsp;<BR>Well,&nbsp;we're&nbsp;finally&nbsp;here.&nbsp;It's&nbsp;time&nbsp;to&nbsp;talk&nbsp;about&nbsp;programming.&nbsp;In&nbsp;this&nbsp;<BR>section,&nbsp;I'll&nbsp;cover&nbsp;various&nbsp;data&nbsp;types&nbsp;used&nbsp;by&nbsp;the&nbsp;sockets&nbsp;interface,&nbsp;since&nbsp;<BR>some&nbsp;of&nbsp;them&nbsp;are&nbsp;a&nbsp;real&nbsp;bitch&nbsp;to&nbsp;figure&nbsp;out.&nbsp;<BR>First&nbsp;the&nbsp;easy&nbsp;one:&nbsp;a&nbsp;socket&nbsp;descriptor.&nbsp;A&nbsp;socket&nbsp;descriptor&nbsp;is&nbsp;the&nbsp;<BR>following&nbsp;type:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;<BR>Just&nbsp;a&nbsp;regular&nbsp;int.&nbsp;<BR>Things&nbsp;get&nbsp;weird&nbsp;from&nbsp;here,&nbsp;so&nbsp;just&nbsp;read&nbsp;through&nbsp;and&nbsp;bear&nbsp;with&nbsp;me.&nbsp;Know&nbsp;<BR>this:&nbsp;there&nbsp;are&nbsp;two&nbsp;byte&nbsp;orderings:&nbsp;most&nbsp;significant&nbsp;byte&nbsp;(sometimes&nbsp;called&nbsp;<BR>an&nbsp;&quot;octet&quot;)&nbsp;first,&nbsp;or&nbsp;least&nbsp;significant&nbsp;byte&nbsp;first.&nbsp;The&nbsp;former&nbsp;is&nbsp;called&nbsp;<BR>&quot;Network&nbsp;Byte&nbsp;Order&quot;.&nbsp;Some&nbsp;machines&nbsp;store&nbsp;their&nbsp;numbers&nbsp;internally&nbsp;in&nbsp;<BR>Network&nbsp;Byte&nbsp;Order,&nbsp;some&nbsp;don't.&nbsp;When&nbsp;I&nbsp;say&nbsp;something&nbsp;has&nbsp;to&nbsp;be&nbsp;in&nbsp;NBO,&nbsp;you&nbsp;<BR>have&nbsp;to&nbsp;call&nbsp;a&nbsp;function&nbsp;(such&nbsp;as&nbsp;htons())&nbsp;to&nbsp;change&nbsp;it&nbsp;from&nbsp;&quot;Host&nbsp;Byte&nbsp;<BR>Order&quot;.&nbsp;If&nbsp;I&nbsp;don't&nbsp;say&nbsp;&quot;NBO&quot;,&nbsp;then&nbsp;you&nbsp;must&nbsp;leave&nbsp;the&nbsp;value&nbsp;in&nbsp;Host&nbsp;Byte&nbsp;<BR>Order.&nbsp;<BR>My&nbsp;First&nbsp;Struct(TM)--struct&nbsp;sockaddr.&nbsp;This&nbsp;structure&nbsp;holds&nbsp;socket&nbsp;address&nbsp;<BR>information&nbsp;for&nbsp;many&nbsp;types&nbsp;of&nbsp;sockets:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;sockaddr&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;short&nbsp;&nbsp;&nbsp;&nbsp;sa_family;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;address&nbsp;family,&nbsp;AF_xxx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sa_data[14];&nbsp;&nbsp;/*&nbsp;14&nbsp;bytes&nbsp;of&nbsp;protocol&nbsp;address&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;<BR>sa_family&nbsp;can&nbsp;be&nbsp;a&nbsp;variety&nbsp;of&nbsp;things,&nbsp;but&nbsp;it'll&nbsp;be&nbsp;&quot;AF_INET&quot;&nbsp;for&nbsp;everything&nbsp;<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -