freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

linu組網(wǎng)技術(shù)與網(wǎng)絡(luò)通信編程(編輯修改稿)

2025-01-19 01:06 本頁面
 

【文章內(nèi)容簡介】 d==0) printf (“ I’ m child… \n” )。 else printf (“ fork error\n” )。 … 38 常用的系統(tǒng)調(diào) —— exec() 功能:執(zhí)行一個(gè)文件 語法: include int execl(char *path,char *arg0,...,(char *)0)。 int execv(char *path,char *argv[])。 int execle(char *path,char *arg0,… ,(char *)0,char *envp[])。 int execve(char *path,char *argv[],char *envp[])。 int execl(char *file,char *arg0,...,(char *)0)。 int execvp(char *file,char *argv[])。 返回值:失敗時(shí)返回 1。 例子: … execl (“ /bin/ps” , “ ps” , “ ef” , (char *)0)。 printf (“ fork error\n” )。exit (1)。 … 39 常用的系統(tǒng)調(diào) —— wait()和 waitpid() 功能:等待一個(gè)子進(jìn)程返回并修改狀態(tài) 語法: include sys/ include sys/ pid_t wait (int *stat_loc)。 pid_t waitpid (pid_t pid , int *stat_loc , int options)。 返回值:等待到一個(gè)子進(jìn)程返回時(shí) , 返回該子進(jìn)程號(hào) ,否則返回 1。 同時(shí) stat_loc存放子進(jìn)程的返回值 。 40 常用的系統(tǒng)調(diào) —— exit() 功能:終止進(jìn)程 . 語法: include void exit (int status)。 說明:調(diào)用進(jìn)程被該系統(tǒng)調(diào)用終止 。 返回值:無 例子: … if (fork ()0) wait ((int *)0)。 /*父進(jìn)程等子進(jìn)程 */ else { /*子進(jìn)程處理過程 */ exit (0)。 } … 返回 41 Linux上 Socket編程及實(shí)例 ? Berkeley套接字概述 ? 套接字基礎(chǔ)知識(shí) ? 基本套接字 基本套接字系統(tǒng)調(diào)用 客戶-服務(wù)器模式 ? DNS的操作 ? 五種 I/O模式 ? 使用 Id 返回 42 Berkeley套接字概述 —— 套接字歷史 在 80年代早期,遠(yuǎn)景研究規(guī)劃局資助了加利福尼亞大學(xué)伯克利分校的一個(gè)研究組,讓他們將 TCP/IP軟件移植到 UNIX操作系統(tǒng)中。作為項(xiàng)目的一部分,設(shè)計(jì)者們創(chuàng)建了一個(gè)接口,應(yīng)用進(jìn)程使用這個(gè)接口可以方便地進(jìn)行通信。于是就出現(xiàn)了插口接口( Berkeley套接口)。 它首先出現(xiàn)在 BSD 。由于許多計(jì)算機(jī)廠商都采用了 Berkeley UNIX,于是許多機(jī)器上都可以使用套接字。這樣,套接字就被廣泛使用,到現(xiàn)在已經(jīng)成為事實(shí)上的標(biāo)準(zhǔn)。 43 Berkeley套接字概述 —— 何謂套接字 套接字 (Socket)英文原意是 “ 插座 ” , 作為 BSD UNIX的進(jìn)程通信機(jī)制 , 它實(shí)質(zhì)上提供了進(jìn)程通信的端點(diǎn) 。 每個(gè)套接字都包含三個(gè)值:協(xié)議 、 本地地址和本地端口號(hào) 。 套接字有本地唯一的套接字號(hào) , 是一個(gè)整型數(shù) 。 事實(shí)上它是一個(gè)文件描述符 。 44 Berkeley套接字概述 —— 套接字類型 ? 流式套接字 ( SOCK_STREAM) :提供可靠的 、面向連接的通信流 , 通過它發(fā)送的數(shù)據(jù)保證原有順序不變 。 它使用的是 TCP協(xié)議 。 ? 數(shù)據(jù)報(bào)套接字 ( SOCK_DGRAM) :定義了一種無連接的服務(wù) , 數(shù)據(jù)通過相互獨(dú)立的報(bào)文進(jìn)行傳輸 , 是無序的 , 并且不保證可靠 、 無差錯(cuò) 。它使用的是 UDP協(xié)議 。 ? 原始套接字 ( SOCK_RAW) :允許對(duì)底層的協(xié)議直接訪問 , 主要用于新的網(wǎng)絡(luò)協(xié)議的開發(fā) 。它功能強(qiáng)大 , 但沒有上面兩種套接字方便 。 返回 45 套接字基礎(chǔ)知識(shí) —— IPv4套接字地址結(jié)構(gòu) IPv4套接字地址結(jié)構(gòu)在 i/: struct in_addr { in_addr_t s_addr。 //32位 IPv4地址 }。 //網(wǎng)絡(luò)字節(jié)順序 struct sockaddr_in{ uint8_t sin_len。 //結(jié)構(gòu)的長度 ( =16) sa_family_t sin_family。 //AF_INET in_port_t sin_port。 //16端口號(hào) //網(wǎng)絡(luò)字節(jié)順序 struct in_addr sin_addr。 char sin_zero[8]。 //無用 }。 46 套接字基礎(chǔ)知識(shí) —— IPv6套接字地址結(jié)構(gòu) IPv6套接字地址結(jié)構(gòu)在 i/: struct in6_addr { uint8_t s6_addr[16]。 //128位 IPv6地址 }。 //網(wǎng)絡(luò)字節(jié)順序 struct sockaddr_in6{ uint8_t sin6_len。 //結(jié)構(gòu)的長度 ( =24) sa_family_t sin6_family。 //AF_INET6 in_port_t sin6_port。 //16位端口號(hào) //網(wǎng)絡(luò)字節(jié)順序 uint32_t sin6_flowinfo。 //優(yōu)先級(jí)和流標(biāo)記 //網(wǎng)絡(luò)字節(jié)順序 struct in6_addr sin6_addr。 }。 47 套接字基礎(chǔ)知識(shí) —— 一般套接字地址結(jié)構(gòu) 一般的套接字地址結(jié)構(gòu)在 sys/: struct sockaddr{ uint8_t sa_len。 //結(jié)構(gòu)的長度 ( =16) sa_family_t sa_family。 //地址族: AF_xxx char sa_data[14]。 //協(xié)議特殊的地址 }。 套接字函數(shù)地址參數(shù)被定義成取得一般的套接字地址結(jié)構(gòu) , 例如下面的函數(shù): int bind (int , struct sockaddr *, socklen_t) 對(duì)它的調(diào)用應(yīng)是如下: struct sockaddr_in serv。 bind (sockfd , (struct sockaddr *) serv , sizeof (serv))。 48 套接字基礎(chǔ)知識(shí) —— 字節(jié)順序轉(zhuǎn)換 (1) 主機(jī)字節(jié)順序和網(wǎng)絡(luò)字節(jié)順序: 不同的機(jī)器 , 內(nèi)部對(duì)變量的字節(jié)存儲(chǔ)順序不同 。 有的系統(tǒng)是高位在前 , 低位在后;有的系統(tǒng)則是低位在前 , 高位在后 。 這種由特定系統(tǒng)定義的順序我們稱為主機(jī)字節(jié)順序 。 網(wǎng)絡(luò)協(xié)議要求在網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)具有統(tǒng)一的順序 , 我們稱為網(wǎng)絡(luò)字節(jié)順序 。 49 套接字基礎(chǔ)知識(shí) —— 字節(jié)順序轉(zhuǎn)換 (2) 有關(guān)的轉(zhuǎn)換函數(shù): include i/ uint16_t htons (uint16_t host16bitvalue)。 uint32_t htonl (uint32_t host32bitvalue)。 uint16_t ntohs (uint16_t 16bitvalue)。 uint32_t ntohl (uint32_t 32bitvalue)。 50 套接字基礎(chǔ)知識(shí) —— IP地址轉(zhuǎn)換 (1) include arpa/ int i_aton (const char * strptr , struct in_addr *addrptr)。 //將 C字符串轉(zhuǎn)換成地址值 。 成功返回 1, 否則返回 0。 in_addr_t i_addr (const char * strptr)。 //將 C字符串轉(zhuǎn)換成地址值 。 成功返回該值 , 否則返回INADDR_NONE。 char *i_ntoa (struct in_addr inaddr)。 //將 32位二進(jìn)制網(wǎng)絡(luò)字節(jié)順序 IPv4地址轉(zhuǎn)換成對(duì)應(yīng)的帶小數(shù)點(diǎn)的十進(jìn)制數(shù)字串 。 返回值將是該字符串 。 int i_pton (int family , const char * strptr , void *addrptr)。 //將 C字符串轉(zhuǎn)換成地址值 , 成功返回 1, 字符串格式不合法返回 0, 錯(cuò)誤返回 1。 const char *i_ntop (int family , const void * addrptr , char *strptr , size_t len)。 //執(zhí)行與 i_pton相反的功能 。 失敗返回 NULL。 51 套接字基礎(chǔ)知識(shí) —— IP地址轉(zhuǎn)換 (2) 關(guān)于 i_ntoa的一個(gè)例子: … char *a1,*a2。 struct in_addr inaddr1,inaddr2。 =htonl (0xD2220601)。 =htonl (0xD2220666)。 a1=i_ntoa (inaddr1)。 a2=i_ntoa (inaddr2)。 printf (“ address 1: %s \n” ,a1)。 printf (“ address 2: %s \n” ,a2)。 … 上面程序的返回值是: address 1: address 2: 52 套接字基礎(chǔ)知識(shí) —— 字節(jié)處理函數(shù) include void bzero (void *dest , size_t nbytes)。 //將目標(biāo)中特定數(shù)目的字節(jié)置 0。 void bcopy (const void *src , void *dest , size_t nbytes)。 //從源中拷貝特定數(shù)目的字節(jié)到目標(biāo)中 。 int bcmp (const void *ptr1 , const void *ptr2 ,size_t nbytes)
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1