封裝TCP UDP函式

2021-10-22 14:27:03 字數 2442 閱讀 2137

nwtwork.h

#ifndef network_h

#define network_h

#include

#include

#include

typedef

struct network

network;

typedef

struct sockaddr* sp;

// 分配記憶體、建立socket物件、初始化位址、繫結、連線

network*

init_nw

(int type,

short port,

const

char

* ip,bool issvr)

;// 等待連線,只有type是sock_stream 且是服務端才能呼叫此函式

network*

accept_nw

(network* svr_nw)

;// 具備send和sendto的功能

intsend_nw

(network* nw,

void

* buf,size_t len)

;// 具備recv和recvfrom的功能

intrecv_nw

(network* nw,

void

* buf,size_t len)

;// 關閉sock物件且釋放記憶體

void

close_nw

(network* nw)

;#endif

//network_h

network.c

#include

#include

#include

#include

#include

#include

"network.h"

// 分配記憶體、建立socket物件、初始化位址、繫結、連線

network*

init_nw

(int type,

short port,

const

char

* ip,bool issvr)

nw->addr.sin_family = af_inet;

nw->addr.sin_port =

htons

(port)

; nw->addr.sin_addr.s_addr =

inet_addr

(ip)

; nw->addrlen =

sizeof

(struct sockaddr_in)

; nw->type = type;

nw->issvr = issvr;

if(issvr)

if(sock_stream == type &&

listen

(nw->sock_fd,50)

)}else

if(sock_stream == type)

}return nw;

}// 等待連線,只有type是sock_stream 且是服務端才能呼叫此函式

network*

accept_nw

(network* svr_nw)

network* nw =

malloc

(sizeof

(network));

nw->addrlen = svr_nw->addrlen;

nw->type = sock_stream;

nw->issvr = false;

nw->sock_fd =

accept

(svr_nw->sock_fd,

(sp)

&nw->addr,

&svr_nw->addrlen);if

(0> nw->sock_fd)

return nw;

}// 具備send和sendto的功能

intsend_nw

(network* nw,

void

* buf,size_t len)

// 具備recv和recvfrom的功能

intrecv_nw

(network* nw,

void

* buf,size_t len)

// 關閉sock物件且釋放記憶體

void

close_nw

(network* nw)

在檔案下執行

gcc -fpic -c network.c

gcc -fpic -shared network.o -o libnw.so

sudo cp libnw.so /usr/lib/

sudo cp network.h /usr/include/

關於TCP UDP的包過濾函式

包過濾函式 forward action filterpacket unsignedchar packetheader,unsignedchar packet,unsignedint packetlength,direction e direction,unsignedint recvinte ce...

php如何封裝函式 PHP cURL 函式封裝

概念描述 curl是乙個非常強大的開源庫,支援很多協議,包括http ftp telnet等,可以使用curl實現get和post請求的方法。應用場景 函式 curl curl 支援http https,get post author qiuguanyou version v1.0 date 201...

TCP UDP程式設計

linux tcp udp程式設計 tcp程式設計伺服器端一般步驟 1 建立乙個socket,用函式socket 2 設定socket屬性,用函式setsockopt 可選 3 繫結ip位址 埠等資訊到socket上,用函式bind 4 開啟監聽,用函式listen 5 接收客戶端上來的連線,用函式...