windows下的乙個C socket伺服器

2021-07-01 23:30:43 字數 1311 閱讀 3955

#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...