嘗試封裝socket 對this指標的猜想

2021-06-17 15:19:06 字數 1753 閱讀 9818

* mysock.h

* * 建立日期: 2023年7月27日

*/#ifndef _mysock_h

#define _mysock_h

#include struct mysock;

struct mysock* newsock (int domain, int type, int protocol);

int mybind (const char* ip, const int port, struct mysock* mysock);

int myconnect (struct mysock* mysock);

int mylisten(int backlog, struct mysock* mysock);

int myaccept (struct mysock* mysock);

ssize_t mysend (int s, const void* buf, size_t len, size_t flags);

ssize_t myrecv (int s, const void* buf, size_t len, size_t flags);

void freesock(struct mysock* mysock);

#endif /*_mysock_h*/

#include "mysock.h"

#include #include #include #include struct mysock ;

struct mysock* newsock (int domain, int type, int protocol)

mysock->addr.sin_family = domain;

mysock->bind = mybind;

mysock->connect = myconnect;

mysock->listen = mylisten;

mysock->accept = myaccept;

return mysock;

}int mybind (const char* ip, const int port, struct mysock* mysock)

int myconnect (struct mysock* mysock)

int mylisten(int backlog, struct mysock* mysock)

int myaccept (struct mysock* mysock)

ssize_t mysend (int s, const void* buf, size_t len, size_t flags)

ssize_t myrecv (int s, const void* buf, size_t len, size_t flags)

void freesock(struct mysock* mysock)

想嘗試著封裝一下socket ,使他們看起來更簡潔,統一。注釋沒寫,因為這些函式比較常見,定義了乙個mysock類,資料的操作盡量在該類的成員函式中完成。為了訪問成員函式中的資料,我只能想出把該指向物件的指標作為引數傳遞給成員函式的方法了,這有點像c++的this指標,我想c++的設計者是不是在這個過程中發現,乾脆約定乙個叫this指標的東西吧,這樣就不用給每個成員函式都定義乙個指向自己的指標了。另外這個類中還定義了乙個void* data,這個可是神器,它能訪問的東西很多,例如它的父親,它能和很多東西發生關聯。

封裝socket整理

不管是socket通訊程式的客戶端還是服務端,準備工作的 較長,影響了主程式的簡潔性,不過可以分離出來,追求簡單實用。用c語言封裝 c語言只能把程式封裝成函式。測試 客戶端 int connectclient const char severip,const int port include inc...

Linux元件封裝 八 Socket的封裝

我們要封裝socket,首先我們需要了解socket需要哪些要素 1 首先,乙個套接字建立後,需要繫結一塊網絡卡的ip,以及連線的對口號,所以我們先封裝inetaddr。在class中,僅有的乙個私有成員就是struct sockaddr in型別的乙個物件,我們需要將該物件的幾種賦值與建立封裝到類...

嘗試進行函式封裝 計算BMI值

嘗試函式封裝 def func name height,weight 乙個人的身高 m 和體重 kg height 0.17,weight 65,根據bmi公式 體重除以身高的平方 計算他的bmi指數 a.例如 乙個65公斤的人,身高是1.62m,則bmi為 65 1.62 2 24.8 b.根據b...