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