這是乙個適宜於windows與linux雙環境編譯的包。當然其中有些地方需要編譯前手工調換。下面以linux環境為主進行解析。
預備的一些格式。這裡為了適用於不同環境編譯。大量使用了類似以下結構的預編譯形式:
很顯然,能在跨平台編譯的原因就在這裡。
接下來就是我們需要解析並理解的例項**。
首先:全域性參數列
shpp.h
這裡的亮點在於標頭檔案由編譯系統環境的不同而選擇不同。
knsocket.h
這裡我們可以看到knsocket的整個結構
enum kn_error為錯誤返回列舉型別。
class csockaddr為socket位址操作類。
csockaddr()預設空位址指標初始化。
csockaddr(sockaddr_in &sin)直接賦予sockaddr_in值初始化。
csockaddr(const long uladdr, const uint16 ushport = 0)賦予字元與數字引數入參轉變初始化。
char* dotteddecimal()正如函式名將網間傳輸所用addr轉化為可列印輸出的常見**格式字串。
uint16 port() const將網間傳輸的埠轉化為主機位元組形式。
uint32 ipaddr() const將網間傳輸的ip位址值轉化為主機位元組
csockaddr& operator=(const sockaddr_in& sin)
lpcsockaddr getlpsockaddr()
operator lpcsockaddr() 這三個都是為了高效的將sockaddr_in轉化為sockaddr而準備的。
class cknsocket當然為結構主體了
#ifdef _win32
static int initsocket();
static int exitsocket();
#endif 當windows環境下時的socket初始化和退出函式。
cknsocket();初始化令m_hsocket為0。
void cleanup();關閉m_hsocket指示socket鏈結(如果存在)並將其値重置為0.沒有返回值。
int create(int ntype = sock_stream);在m_hsocket建立通訊用末端點。
int close();關閉m_hsocket指示socket鏈結(如果存在)並將其値重置為0.正常關閉或者已經關閉返回值為0。
int bind(lpcsockaddr psa);給m_hsocket繫結psa。
int listen(uint32 nqlen = 5);監聽埠。
int connect(lpcsockaddr psa);與psa所提供網間**鏈結。
int accept(cknsocket& s, lpcsockaddr psa);將psa聯絡到s->m_hsocket。
int send(const char* pch, const int nsize, const int nsecs);將pch中的字串按nsize大小在nsecs微妙內傳送到傳送緩衝中。
int write(const char* pch, const int nsize, const int nsecs);將pch內總大小為nsize的內容在nsecs秒內拷貝到傳送緩衝中。
int receive(char* pch, const int nsize, const int nusecs);
int senddatagram(const char* pch, const int nsize, lpcsockaddr psa, const int nsecs = 10 );
int receivedatagram(char* pch, const int nsize, lpcsockaddr psa, const int nsecs = 10);
int getpeeraddr(lpcsockaddr psa);
int getsockaddr(lpcsockaddr psa);
int getsockaddr(char *chipaddr);
operator socket()
從開源開始
把程式 全部公開是非常符合人性。這大概因為人性是懶惰的。既然能夠用電腦完成,就不要用人來完成。但電腦還是需要人來控制。於是,有眾多的人辛辛苦苦地加入了程式設計師的行列裡。開源後程式設計師也可以懶一些,把除錯 和增加功能交給了大眾。同時獲益的也有大眾,他們可以不做出重複勞動了。是的,多好啊,他們可以不...
學習從自己開始
人生苦短,轉眼大學生活已過大半,回首往事,覺得自己很傻,浪費愛戀很多時間,而學到的知識卻是少之又少,所以現在決定發奮圖強,狂補一下了!現在我們正在學習資料結構,我每天就是去上上課,感覺日子過得很輕鬆,但是沒完我睡在床上,感覺自己一無是處,除了上課時間之外,我的時間全花在同外國人聊天了,雖然這對我的英...
軟體從需求開始
軟體從 開始,搞了這麼多年軟體,才體會軟體是從需求而來。軟體環節中最重要的是什麼?是短板。哪個最容易出現短板呢?需求。需求最重要解決的什麼,解決的人的需求,人的問題。所以軟體要解決的問題就是人的問題,所以我們軟體管理中要解決的一切問題,都是以解決人為主線,從這個意義來講,軟體是主觀的。那麼參與軟體的...