TCP IP網路程式設計

2021-10-14 22:31:20 字數 2436 閱讀 1094

套接字:傳輸網路資料的軟體裝置。

tcp的特點:可靠的、按序傳遞的、基於位元組的面向連線的資料傳輸方的協議。傳輸過程中資料不會消失,按序傳輸資料,傳輸的資料不存在資料邊界。

udp的特點:不可靠的、無序的、以資料高速傳輸為目的的協議。強調快速傳輸而非傳輸順序,傳輸的資料可能丟失也可能損壞,傳輸的資料有資料邊界,限制每次傳輸的大小。

網路模型(四層):應用層、tcp或udp層、ip層、網路層。

三次握手,四次揮手。

半關閉狀態:關閉一半的套接字快取區,即關閉寫快取或者讀快取。

ip位址分類。

i/o復用:提高i/o使用效率的技術,linux下主要有select和epoll。

條件觸發和邊緣觸發。

大端序,小端序。

程序,多程序,殭屍程序,程序間通訊。

執行緒,多執行緒。

呼叫socket函式,建立套接字。

呼叫bind函式,申請ip位址和埠號。

呼叫listen函式,使套接字變為可接受連線請求的狀態。

呼叫accept函式,接受連線請求。

呼叫close函式,關閉套接字。

呼叫socket函式,建立套接字。

呼叫connect函式,傳送連線請求。

呼叫close函式,關閉套接字。

int socket (int __domain, int __type, int __protocol);

struct sockaddr_in; 

struct sockaddr; 

int bind (int __fd, __const_sockaddr_arg __addr, socklen_t __len);

int listen (int __fd, int __n);

int accept (int __fd, __sockaddr_arg __addr, socklen_t *__restrict __addr_len);

int shutdown (int __fd, int __how);

int connect (int __fd, __const_sockaddr_arg __addr, socklen_t __len);

int close (int __fd);

setsockopt (int __fd, int __level, int __optname, const void *__optval, socklen_t __optlen); // 套接字設定

ssize_t read (int __fd, void *__buf, size_t __nbytes); // 接受資料,阻塞

ssize_t write (int __fd, const void *__buf, size_t __n); // 傳送資料

uint16_t htons (uint16_t __hostshort); // 轉換埠號,處理大端序小端序號

uint32_t htonl (uint32_t __hostlong); // 轉換ip位址,處理大端序小端序號

in_addr_t inet_addr (const char *__cp); // 轉換ip位址

struct hostent *gethostbyname (const char *__name);

(select相關)

fd_set;

fd_zero(fd_set*);

fd_set(int fd, fd_set*);

fd_clr(int fd, fd_set*);

int select (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, struct timeval *__restrict __timeout);

(epoll相關)

struct epoll_event;

int epoll_create (int __size);

int epoll_wait (int __epfd, struct epoll_event *__events, int __maxevents, int __timeout);

int epoll_ctl (int __epfd, int __op, int __fd, struct epoll_event *__event);

(下面的udp)

ssize_t sendto (int __fd, const void *__buf, size_t __n, int __flags, __const_sockaddr_arg __addr, socklen_t __addr_len);

ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n, int __flags, __sockaddr_arg __addr, socklen_t *__restrict __addr_len);

TCP IP網路程式設計

tcp ip 是供已連線網際網路的計算機進行通訊的通訊協議。tcp ip 定義了裝置 並非只有計算機 如何連入網際網路,以及資料如何在它們之間傳輸的標準。ip internet protocol 網際網路協議。從這個名稱我們就可以知道ip協議的重要性。在現實生活中,我們進行貨物運輸時都是把貨物包裝成...

網路程式設計學習 tcp ip程式設計

tcp 不記錄訊息邊界 udp 記錄訊息邊界 用到的結構體 struct sockaddr un 例子 struct sockaddr un serveraddr serveraddr.sun family af unix server socket strcpy serveraddr.sun pa...

TCP IP 網路程式設計(五)

select並不是把發生變化的檔案描述符單獨集中到一起,而是通過觀察作為監視物件的fd set函式的變化,因此不能避免對所有監視物件的迴圈語句。而且,監視物件變數會發生變化,在呼叫select函式之前要複製並儲存原有資訊,並在每次呼叫時傳遞新的監視物件資訊。傳遞新的監視物件資訊是資源消耗的主要原因,...