1. 在VC的SOCKET網路編程中,誰能說說winsock.h winsock2.h afxsock.h wsock32.lib WS2_32.lib他們的區別
不會也是考網路編程吧?我們剛剛考好,剛復習完
我也是略懂
其實樓主還有一個沒提到,就是 winsock.dll
樓主說的afxsock.h我倒是不怎麼了解
其他的,他們間是這樣的
所有的.h是頭文件,.lib是靜態庫文件,.dll是動態庫文件
之所以樓主能使用這些編程就是考這些分工嚴密的東東幫忙。
socket編程說到底就是使用網路的編程,和普通的程序不同,
socket要用到網路,那它就得用網路設備(就是網卡)。
但一般我們用來寫程序的都是像c++這類高級語言,是不操作底層硬體的。
所以就需要有人來幫我們完成或者說屏蔽掉底層的操作。
大致流程是,首先,網卡會有驅動程序來驅動,一般是在系統內的.sys文件完成,
然後.dll會接管工作,此時都還是些硬體的操作,但通過動態鏈接庫後,很多底層的細節開始被屏蔽,這里只指一些瑣碎的操作.dll會幫你完成掉了,但其實.dll完成的也是個半成品,樓主也沒辦法直接用來編程。
於是.lib上場了,.lib將.dll處理的半成品拿來,將它們封裝成一個個API,這樣,我們就可以通過API來調用網卡的功能了,當然這還不夠,API畢竟也是個很麻煩的東西,而且功能不夠細化。
於是就做了.h,這些頭文件是可以直接打開來看的,實際裡面就是些調用API的命令,還有就是把和相關的業務邏輯的變數啊結構體啊給定義一下。
比如在winsock.h中會定義sockaddr_in這樣的結構體,用它來表示一個主機的IP和埠很方便,不過也不復雜,樓主也當然可以定義自己的結構體,不過,正是因為這些頭文件幫你定義好了很多業務中常用的變數結構體之類,使得你編程的時候能更加關心程序本身了。
大致關系就是這樣子調用的。
在寫程序中,頭文件的包含是不能少的,靜態庫也必須放到程序里,當然可以通過開發環境的添加或者在程序中直接包含都行,動態鏈接庫一般不用操心,會自帶的,不過有時也會遇到損壞之類的,網上直接下一個就行了。
具體的winsock.h winsock2.h也就是些版本上的區別,就像QQ2009和QQ2010都是QQ,都能聊天,就是版本更新了,很多細小的地方有些變動而已。
2. VC 網路編程 UDP文件傳輸 接受端只能收到前面的8k數據 問解決辦法
可能你的網路原因後面的包可能被丟棄了。這是UDP協議固有的問題,如果需要校驗或者超時重發必須自己寫。TCP就不會有這樣的問題。
3. 自學Java如何入門
自學Java看這一篇就夠啦!Java學習路線圖分享給你,跟著學習吧!
一、Java基礎