從KNSocket開始 未完)

2021-05-05 15:23:19 字數 2076 閱讀 2778

這是乙個適宜於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()

從開源開始

把程式 全部公開是非常符合人性。這大概因為人性是懶惰的。既然能夠用電腦完成,就不要用人來完成。但電腦還是需要人來控制。於是,有眾多的人辛辛苦苦地加入了程式設計師的行列裡。開源後程式設計師也可以懶一些,把除錯 和增加功能交給了大眾。同時獲益的也有大眾,他們可以不做出重複勞動了。是的,多好啊,他們可以不...

學習從自己開始

人生苦短,轉眼大學生活已過大半,回首往事,覺得自己很傻,浪費愛戀很多時間,而學到的知識卻是少之又少,所以現在決定發奮圖強,狂補一下了!現在我們正在學習資料結構,我每天就是去上上課,感覺日子過得很輕鬆,但是沒完我睡在床上,感覺自己一無是處,除了上課時間之外,我的時間全花在同外國人聊天了,雖然這對我的英...

軟體從需求開始

軟體從 開始,搞了這麼多年軟體,才體會軟體是從需求而來。軟體環節中最重要的是什麼?是短板。哪個最容易出現短板呢?需求。需求最重要解決的什麼,解決的人的需求,人的問題。所以軟體要解決的問題就是人的問題,所以我們軟體管理中要解決的一切問題,都是以解決人為主線,從這個意義來講,軟體是主觀的。那麼參與軟體的...