#include
uint32_t htonl(uint32_t hostlong) //主機位元組序轉網路位元組序
uint32_t htons(uint32_t hostshort)
uint32_t ntohl(uint32_t hostlong) //網路位元組序轉主機位元組序
uint32_t ntohl(uint32_t hostshort)
socket常用api:
#include
#include
// 建立 socket 檔案描述符 (tcp/udp, 客戶端 + 伺服器)
int socket( int domain, int type, int protocol );
domain:選定乙個協議族(ipv4/ipv6 af_inet表示ipv4)
type:面向資料流還是資料報(sock_dgram面向資料報)
protocol:預設填0
// 開始監聽socket (tcp, 伺服器)
int listen(int socket, int backlog);
// 接收請求 (tcp, 伺服器)
int accept(int socket, struct sockaddr* address, socklen_t* address_len);
address_len:作為輸入是表示傳入的緩衝區的大小(client),作為輸出是它表示客戶端發來的套接字容量有多大;
返回值是乙個檔案描述符;
// 建立連線 (tcp, 客戶端)
int connect(int sockfd, const
struct sockaddr *addr, socklen_t addrlen);
//傳送資料(tcp,客戶端+伺服器)
//如果flags置為0,則等價於write
ssize_t send(int sockfd,const
void* buf,size_t len, int flags);
//傳送資料(tcp/udp,客戶端+伺服器)
//如果dest_addr置為 null , addrlen置為0,則相當於 send
ssize_t sendto(int sockfd, const
void *buf, size_t len, int flags,const
struct sockaddr *dest_addr, socklen_t addrlen);
//接收資料(tcp,客戶端+伺服器)
//如果flags置為0,則等價於read
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
//接收資料(tcp/udp,客戶端+伺服器)
//如果src_addr置為 null , addrlen置為0,則相當於 recv
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen);
sockfd:socket
buf:緩衝區
len:緩衝區長度
flags:0
// 繫結端⼝口號 (tcp/udp, 伺服器)
int bind(int socket, const
struct sockaddr *address, socklen_t address_len);
//監聽
int listen(int sock,int backlog)
backlog:不能過長
netstat -nlp 檢視udp的程序
netstat -nlpt 檢視tcp的程序
網路 Socket套接字
socket介面在讀寫資料時,都是按字串的方式接收的,若要傳輸乙個 結構化的資料 就需要使用序列化和反序列化。序列化是將資料由多變到一的過程,反序列化是將資料由一分為多的過程。ip位址唯一標識公網當中的一台主機 埠號唯一標識互聯 定主機上的特定程序。每一對埠號加ip位址能夠唯一標識網路中一台主機上唯...
socket網路套接字
爬蟲的概念 爬蟲的應用 1.資料採集 大資料時代來臨,資料就是核心,資料就是生產力,越來越多的企業開始注重收集使用者資料,而爬蟲技術是收集資料的一種重要手段。2.搜尋引擎 3.模擬操作 爬蟲也被廣泛用於模擬使用者操作,測試機械人,灌水機械人等。爬蟲難點主要分為兩個方向 資料的獲取 網路公共資源都是為...
網路程式設計 Socket 套接字
網路程式設計 目前較為流行的網路程式設計模型是客戶機 伺服器 c s 結構。即通訊雙方一方作為服務 器等待客戶提出請求並予以響應。客戶則在需要服務時向伺服器提出申請。伺服器一般作為 守護程序始終執行,監聽網路埠,一旦有客戶請求,就會啟動乙個服務程序來響應該客 戶,同時自己繼續監聽服務埠,使後來的客戶...