1. 程式人生 > 其它 >【網路程式設計】學習筆記--01 套接字與檔案操作

【網路程式設計】學習筆記--01 套接字與檔案操作

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 可以新增&關注