套接字:傳輸網路資料的軟體裝置。
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函式之前要複製並儲存原有資訊,並在每次呼叫時傳遞新的監視物件資訊。傳遞新的監視物件資訊是資源消耗的主要原因,...