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