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 接收客戶端上來的連線,用函式...