原创 句柄與指針的不同

       句柄對應的對象往往都處於系統的內核,並可以被所有進程共享,如果直接給你一個指針,結果就是被不懂的人把系統整崩潰,被別有用心的高手拿來做壞事情。        指針給你的權限太大,你往裏面胡亂地整一通,結果就是影響到所有的進程

原创 setsockopt參數詳細說明

int setsockopt( SOCKET s, int level, int optname, const char* optval, int optlen ); s(套接字): 指向一個打開的套接口描述字 level:(級別): 指

原创 sockaddr_in , sockaddr , in_addr的區別

1. struct sockaddr { unsigned short sa_family; /* address family, AF_xxx */ char sa_data[14]; /* 14 bytes of protocol

原创 加入一個組播組

網絡中的一臺主機如果希望能夠接收到來自網絡中其它主機發往某一個組播組的數據報,那麼這麼主機必須先加入該組播組,然後就可以從組地址接收數據包。在廣域網中,還涉及到路由器支持組播路由等,但本文希望以一個最爲簡單的例子解釋清楚協議棧關於組播的一

原创 FILETIME 結構

最近在做關於數據同步更新的編程,就接觸到了FILETIME 這個結構   FILETIME 結構表示自 1601 年 1 月 1 日以來的 100 納秒爲間隔數。結構包含組合在一起形成一個 64 位值的兩個 32 位值。 typ

原创 函數inet_addr和inet_ntoa

inet_addr 將"數字+句點"的格式的IP地址轉換到unsigned long中,返回值已經是按照網絡字節順序的 相反inet_ntoa把類型爲struct in_addr的數據轉化爲"數字+句點"的形式的字符串 typedef u

原创 fscanf函數

下面介紹一個例子, 運行後產後一個test.dat的文件。 例: #include<stdio.h> main() { char *s="That's good news"); /*定義字符串指針並初始化*/ int i=61

原创 CreateFile用法和例子

函數原型:  HANDLE CreateFile(   LPCTSTR lpFileName, //指向文件名的指針   DWORD dwDesiredAccess, //訪問模式(寫/讀)   DWORD dwShareM

原创 UDP實現組播

        最近在做一個局域網 多機互傳文本數據,原先用TCP  但是麻煩重重,兩主機間一一建立連接,釋放連接,開銷太大。最後決定用UDP組播,先發送目標文件的大小,再分段發送文件,接收後回傳確認信息給發送端。效果還不錯,想繼續改進使

原创 PVOID指針

P表示指針,那麼PVOID表示 void * 無類型指針 所有指針都是一個32位二進制數(32位系統下),這個意義上說所有指針都是一樣的,它們的大小一樣,用於指向內存中的某處地址,然而指針爲什麼要有類型之分呢?答案是指針偏移。例如p爲一個

原创 添加一個多組播

應用程序通過命令字IP_ADD_MEMBERSHIP把一個socket加入到一個多播組,IP_ADD_MEMBERSHIP是一個IP層的命令字,其調用使用的參數是結構體struct ip_mreq,其定義如下: struct ip_mre

原创 CreateThread函數

CreateThread函數從一個進程裏面創建一個線程。這個開始的線程必須指定開始執行代碼的地址,新線程執行。有代表性的,開始地址就是一個函數名。這個函數有一個參數,並且返回一個DWORD值。一個進程裏面同時有多個線程在執行。 HANDL

原创 c_str()函數

函數聲明:const char *c_str(); c_str()函數返回一個指向正規C字符串的指針, 內容與本string串相同. 這是爲了與c語言兼容,在c語言中沒有string類型,故必須通過string類對象的成員函數c_

原创 time_t和struct tm類型的相互轉換

              使用gmtime函數或localtime函數將time_t類型的時間日期轉換爲struct tm類型: 使用time函數返回的是一個long值,該值對用戶的意義不大,一般不能根據其值確定具體的年、月、日等數據

原创 static聲明

今天接觸到一種靜態變量累加的方法 一般的局部變量在函數調用結束後,會自動釋放存儲單元,變量的生命週期結束。 使用static關鍵字聲明靜態變量後,在調用函數中某個局部變量以後,該變量的值不消失,並且可以保持原值不變。 靜態局部變量是在編譯