【網路程式設計】學習筆記--01 套接字與檔案操作
阿新 • • 發佈:2021-11-09
1.1網路程式設計套接字
Server端:
網路程式設計中接受連線請求的套接字建立過程可整理如下:
第一步:呼叫socket函式建立套接字
第二步:呼叫bind函式分配IP地址和埠號
第三步:呼叫listen函式轉為可接受請求狀態
第四步:呼叫accept函式受理連線請求
sock函式:建立會話
#include<sys/socket.h> int socket(int domain,int type,int protocol)
|
|- domain 套接字中使用的協議族(Protocol Family)資訊
|- type 套接字資料傳輸型別資訊
|- protocol 計算機間通訊中使用的協議資訊
bind函式:分配IP和PORT
#include<sys/socket.h> int bind(int sockfd,struct sockaddr *myaddr,socklen_t addrlen)
listen函式:建立連線
#include<sys/socket.h> int listen(int socketfd,int backlog)
accep函式:接受連線
#include<sys/socket.h> int accept(int socketfd,struct sockaddr *addr,socklen_t *addrlen)
Client端:
client端套接字的建立過程比建立server端套接字容易:
第一步:呼叫socket函式和connect函式
第二步:與伺服器端共同執行以收發字串資料
connect端函式如下:
#include<sys/socket.h> int connect(int sockfd,struct sockaddr *serv_addr,socklen_t addrlen)
基於Linux的檔案操作:
在《TCP/IC網路程式設計》p10中提到一個很形象的比喻“論文號相當於檔案描述符,論文相當於檔案或套接字”
開啟檔案操作:
#include<sys/type.h> #include<sys/stat.h> #include<fcntl.h> int open(const char *path,int flag) 其中path:檔名的字串地址 flag: 檔案開啟模式資訊 | |- O_CREAT 必要時建立檔案 |- O_TRUNC 刪除全部現有資料 |- O_APPEND 維持現有資料,儲存到其後面 |- O_RDONLY 只讀開啟 |- O_WRONLY 只寫開啟 |- O_RDWR 讀寫開啟
關閉檔案操作:
#include<unistd.h> int close(int fd)
需要注意的是:此函式不僅可以關閉檔案,也可關閉套接字,從而印證“Linux作業系統不區分檔案與套接字”的特點。
將資料寫入檔案:
#include<unistd.h> ssize_t write(int fd,const void *buf,size_t nbytes) | |- fd 顯示資料傳輸物件的檔案描述符 |- buf 儲存要傳輸資料的緩衝區地址值 |- nbytes 要傳輸資料的位元組數
此函式中,size_t意為用typedef宣告的unsigned_int型別,ssize_t意味用typedef宣告的signed_int型別。
讀取檔案中的資料:
#include<unisted.h> ssize_t read(int fd,void *buf,size_t nbytes)Codeforces ID:Anonytt QQ: 847399102 可以新增&關注