Linux系統程式設計之基礎篇

2021-06-26 11:47:15 字數 2218 閱讀 8998

in_addr_t inet_addr(const char* strptr);

《下面涉及的函式都將以此種方式解釋》

序   3.

函式引數:字串

位元組序:不同型別的cpu中,記憶體儲存多位元組整數序有兩種方法---稱為主機位元組序(hbo)。

網路中傳輸的資料必須按網路位元組序,即大端位元組序執行!

在大部分pc機上,當應用程序將整數送入socket前需要轉化成網路位元組序(nbo)。

主機位元組序到網路位元組序的轉化函式:

u_long htonl (u_long hostlong);

u_short htons(u_short short);

網路位元組序到主機位元組序的轉化函式:

u_long ntohl(u_long hostlong);

u_short ntohs(u_short short);

建立套接字函式:

int socket (int domain,int type,int proctcl);

domain引數為:

pf_inet   internet 協議 (一般情況下都用pf_inet)

pf_unix   unix協議

pf_ns

pf_implink

type為套接字型別:

sock_stream  流式套接字  tcp用

sock_dgram    資料報套接字  udp用

sock_raw           原始套接字

protocol引數設定為0

返回值為檔案描述符(sockfd)。

用socket產生的檔案描述符來繫結ip位址和埠號

int bind(int sockfd,struct sockaddr *my_addr,int addrlen);

sockfd :socket的返回值

第二個引數是結構體指標,在**中會注釋

第三個引數是結構體的長度

設定監聽的函式:

int listen(int sockfd,int backlog);

sockfd:監聽鏈結的套接字

返回值:成功返回0失敗返回-1.

int accept(int sockfd,struct sockaddr*addr,socklen_t*addrlen);

sockfd:監聽套接字

第三個引數為:位址結構體的長度

/*函式的演示*/

#include

#include

#include

#include

#include

#include

#include

#include

#include

int main(int argc, const char *argv)

//int socket(int domain, int type, int protocol);建立套接字

if((listenfd = socket(pf_inet,sock_stream,0)) == -1)

memset(&myaddr,0,sizeof(myaddr));用bind前需要填充的結構體中的選項

myaddr.sin_family = pf_inet;

myaddr.sin_port = htons(atoi(argv[2]));

myaddr.sin_addr.s_addr = inet_addr(argv[1]);

//int bind(int sockfd, const struct sockaddr *addr,   利用bind函式

//                         socklen_t addrlen);

if(bind(listenfd,(struct sockaddr*)&myaddr,sizeof(myaddr)) == -1)

//int listen(int sockfd, int backlog); 監聽

if(listen(listenfd,15) == -1)

while(1)

printf("welcome to server : [%s] [%d]\n",

inet_ntoa(peeraddr.sin_addr),

ntohs(peeraddr.sin_port));

close(conntfd);

}return 0;}

此程式中可能存在漏洞希望多多包涵!!!

Linux系統程式設計之程序

程序狀態 4 5種 就緒 初始化 執行,掛起 等待 停止 pbc成員 1 程序id 2 程序狀態 3 程序切換需要儲存和恢復的cpu暫存器 4 描述虛擬位址空間資訊 5 描述控制終端的資訊 6 當前工作目錄 7 umask掩碼 8 檔案描述符 9 訊號相關的資訊 10 使用者和使用者組id 11 會...

Linux系統程式設計之shell script介紹

shell script 程式指令碼化 是乙個可以實現自動管理系統的好工具!它值得開發人員好好學習,基本上,shell script有點像是早期批處理的檔案,即將一些命令彙整起來一次執行,但是shell script擁有更強大的功能,因為它可以編寫不需要經過編譯就能執行的shell script程式...

Linux系統程式設計之檔案程式設計

目錄 一 檔案程式設計 1 linux檔案 2 檔案描述符 file descriptor 3 常用api open write read lseek close 1 open 開啟檔案函式 2 close 關閉檔案 3 write 寫檔案 4 read 讀檔案 5 lseek 游標定位 linux...