MFC 网络编程小结
最近對(duì)MFC的網(wǎng)絡(luò)編程方面研究了一下。。現(xiàn)在想對(duì)學(xué)習(xí)過(guò)程中的問(wèn)題和一些想法做下總結(jié)。
1.現(xiàn)說(shuō)下socket(套接字)吧,初學(xué)者剛看到這個(gè)東西的時(shí)候一定覺(jué)得很神秘,我也一樣,現(xiàn)在也只是有一點(diǎn)皮毛的理解
?socket與MFC網(wǎng)絡(luò)編程是息息相關(guān)的,基本上所有的在網(wǎng)絡(luò)上傳輸數(shù)據(jù)的功能都離不開(kāi)它。 打個(gè)比方,如果把電腦比成手機(jī),那么它就相當(dāng)于你的手機(jī)卡。
?現(xiàn)在我就來(lái)把MFC的socket的工作過(guò)程形象化在大家面前。也就是把對(duì)socket的操作與手機(jī)打電話的每個(gè)步驟聯(lián)系起來(lái)
1.當(dāng)你把手機(jī)卡插上的時(shí)候,就相當(dāng)于創(chuàng)建了一個(gè)套接字(或者看成創(chuàng)建了一個(gè)SOCKET對(duì)象),
2.此時(shí)并把它綁定在你的手機(jī)上,也就是bind操作(插在你的手機(jī)之后,使用權(quán)就落在你的手機(jī)上面了)。
3.然后你把手機(jī)開(kāi)機(jī),這樣你的手機(jī)就能接受到外來(lái)的信號(hào)了,也就相當(dāng)于listen操作(因?yàn)檫@個(gè)時(shí)候你就能接收到外部的信號(hào)了)。
4.這個(gè)時(shí)候突然有人來(lái)電話了,當(dāng)然別人撥打的的只是一個(gè)號(hào)碼,剛好就是你的手機(jī)卡號(hào)(注意你的手機(jī)卡就是你的socket)。這就好比客戶機(jī)的connect操作。
5.這時(shí)你的手機(jī)響了,現(xiàn)在你有兩種選擇:接或者掛。這里我們先假設(shè)你接了吧!這不就相當(dāng)于是accept操作了嗎!~
6.電話通了,下一步是干什么呢??這很顯然是雙方要開(kāi)始溝通了嘛..溝通這個(gè)過(guò)程就是一個(gè)不斷recv和send的過(guò)程。
7.最后電話打完了,現(xiàn)在就要結(jié)束通話,掛機(jī)了。這也就是closesocket了,勉強(qiáng)一點(diǎn)還能算上關(guān)手機(jī)(WSACleanup)這個(gè)過(guò)程。
這樣基本上就把基本的網(wǎng)絡(luò)編程函數(shù)的邏輯關(guān)系給弄清楚了。。。
希望這樣形象的理解能幫助初學(xué)者更快得理解程序的工作原理。。 ?上面主要說(shuō)的是服務(wù)器端的過(guò)程,以及是基于TCP協(xié)議的前提。
另外我想簡(jiǎn)單得說(shuō)下基于UDP方法,方法其實(shí)大體上和TCP差不多,但在數(shù)據(jù)傳輸?shù)臅r(shí)候有點(diǎn)差別,一是函數(shù)名了UDP是recvfrom和sendto,而TCP是send和recv。
二就是服務(wù)端不用listen和accept功能了(用上面的話說(shuō),也就是說(shuō)不管你listen不listen,客戶端都能發(fā)數(shù)據(jù),你接受不接受又是一回事了)。
另外貼一下可能用到的關(guān)于字節(jié)序的常用函數(shù):
網(wǎng)絡(luò)通信中用到的是網(wǎng)絡(luò)字節(jié)序,intel的機(jī)器本機(jī)字節(jié)序和網(wǎng)絡(luò)字節(jié)序的存放格式是不一樣的,所以要用想用的函數(shù)進(jìn)行轉(zhuǎn)化。
inet_addr()將點(diǎn)分十進(jìn)制的IP地址轉(zhuǎn)化為u_long型
inet_ntoa()將in_addr結(jié)構(gòu)類(lèi)型的參數(shù)轉(zhuǎn)化為點(diǎn)分十進(jìn)制的IP地址
htonl()將u_long型的IP地址從主機(jī)字節(jié)序轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)序
htons()將u_short型的IP地址從主機(jī)字節(jié)序轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)序
轉(zhuǎn)載于:https://www.cnblogs.com/yan-boy/archive/2012/08/10/yan-boy.html
總結(jié)
以上是生活随笔為你收集整理的MFC 网络编程小结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: iPhone5s指纹识别速度变慢的解决办
- 下一篇: 完成MSP430的IAP升级程序(总结)