#include //1 以後會用這種方式對特定**進行注釋
#include #include #include #include #include #include #include using namespace std;
#pragma comment(lib,"ws2_32.lib") //2
1. #include
大家會發現windows下有winsock.h和winsock2.h,winsock2.h是winsock.h的公升級版,它設計的目的是替代winsock.h,而不是擴充套件它。在winsock.h中定義的所有內容在winsock2.h中也都定義了。winsock2.h定義了_winsockapi_,阻止編譯器去處理後面的winsock.h,這樣編譯不會報錯。但是如果winsock.h在winsock2.h前出現,winsock2.h就重新定義winsock.h已經定義的東西,導致編譯報錯。
比如#include
#include
//error winsock.h在winsock2.h前出現
#include
#include
//正確 winsock2.h在winsock.h前出現
值得注意的是在windows.h中 舊的版本(我使用的是win7 vs2013)中自動包涵winsock.h,而在新的版本(win8?)中會自動包涵winsock2.h,
所以在某些版本中
#include
#include
//error windows.h中包含了winsock.h winsock.h在winsock2.h前出現
#include
#include
//正確
此外某些第三方的類庫可能也包含了winsock.h,或者在自己的**中既有winsock.h和winsock2.h。這樣在使用時要格外的注意!!!
2 #pragma comment(lib,"ws2_32.lib") 如果沒有新增這行**的話,會出現很多和ws2def.h檔案相關的錯誤
這是因為程式缺少相應的靜態鏈結庫,也可以手動新增:在專案上點右鍵->屬性->配置屬性->鏈結器->輸入->附加依賴項加入ws2_32.lib(每次都要手動新增,不推薦)
#include //包含winsock這個標頭檔案,內容是網路程式設計socket相關部分api
#pragma comment(lib,"ws2_32.lib") //這是鏈結api相關連的ws2_32.lib靜態庫
靜態鏈結庫lib和動態鏈結庫dll的區別:
有興趣的可以參看
magicsoar
出處:
乙個簡單的Windows下的socket程式
上節演示了 linux 下的 socket 程式,這節來看一下 windows 下的 socket 程式。同樣,server.cpp 為伺服器端 client 為客戶端 伺服器端 server.cpp include include pragma comment lib,ws2 32.lib 載入 ...
Windows下配置apache的乙個小陷阱
windows下配置apache的乙個小陷阱 這兩天準備學學php開發,於是就合計裝個apache,網上的教程很多,也很詳細。但是我照著配置完php後發現apache啟動不了啦。檢視log日誌顯示winnt accept asynchronous acceptex failed.廢話少說,解決辦法 ...
windows下mysql安裝失敗的乙個解決案例
access denied for user root localhost using password yes 網上尋找了各種方法,有 原mysql未解除安裝完全的,失敗 有修改密碼的,解決方法如下 f cd f program files mysql mysql server 5.1 bin f...