一、套接字
套接字:源ip位址和目的ip位址以及源埠號和目的埠號的組合稱為套接字。其用於標識客戶端請求的伺服器和服務。常用的tcp/ip協議的3種套接字型別如下所示:
二、相關函式、結構體
2.1 套接字函式
套接字函式
描述linux:
int socket(int af, int type, int protocol);
windows:
socket socket(int af, int type, int protocol);
建立套接字
linux:
int bind(int sock, const struct sockaddr *myaddr, socklen_t addrlen);
windows:
int bind(socket sock, const struct sockaddr *addr, int addrlen);
繫結套接字
linux:
int listen(int sockfd, int backlog);
windows:
int listen(socket sock, int backlog);
進入監聽狀態
linux:
int accept(int sockfd, struct sockaddr *client_addr, socklen_t *len);
windows:
socket accept(socket sock, struct sockaddr *addr, int *addrlen);
等待客戶端連線
linux:
int connect(int sock_fd, struct sockaddr *serv_addr,int addrlen);
windows:
int connect(socket sock, const struct sockaddr *serv_addr, int addrlen);
客戶端連線伺服器
2.2 接受、傳送函式 函式
描述linux:
ssize_t write(int fd, const void *buf, size_t nbytes);
windows:
int send(socket sock, const char *buf, int len, int flags);
傳送資料
linux:
ssize_t read(int fd, void *buf, size_t nbytes);
windows:
int recv(socket sock, char *buf, int len, int flags);
讀取資料
2.3 相關結構體
結構體描述linux:
struct sockaddr_in
windows:
sockaddr_in
設定ip位址,埠等資訊
linux:
struct sockaddr
windows:
socket
設定ip位址,埠等資訊
2.4 ip、埠函式 函式
描述*
int inet_pton(int family, const char *strptr, void *addrptr);
將ip位址在「點分十進位制」和「二進位制整數」之間轉換。而且,能夠處理ipv4和ipv6
*
const char * inet_ntop(int family, const void *addrptr, char *strptr, size_t len);
將數值格式轉化為點分十進位制的ip位址格式。而且,能夠處理ipv4和ipv6
u_short htons(u_short hostshort);
將乙個無符號短整型的主機數值轉換為網路位元組順序,即大尾順序(big-endian)
ntohs():
network to host short,將short型別資料從網路位元組序轉換為主機位元組序。
htonl():
host to network long,將long型別資料從主機位元組序轉換為網路位元組序。
ntohl():
network to host long,將long型別資料從網路位元組序轉換為主機位元組序。
三、windows示列
服務端**
#include
#include
#pragma comment (lib, "ws2_32.lib")
//載入 ws2_32.lib
#define buf_size 100
intmain()
;while(1
)// 關閉套接字
closesocket
(serversock)
;// 終止dll使用
wsacleanup()
;}
客戶端**
#include
#include
#pragma comment(lib, "ws2_32.lib")
//載入 ws2_32.lib
#define buf_size 100
intmain()
;char bufrecv[buf_size]=;
while(1
)// 終止dll使用
wsacleanup()
;return0;
}
四、linux示列
服務端
#include
#include
#include
#include
#include
#include
#define buf_size 100
intmain()
;while(1
)// 關閉套接字
close
(serversock)
;}
客戶端
#include
#include
#include
#include
#include
#include
#define buf_size 100
intmain()
;char bufrecv[buf_size]=;
while(1
)return0;
}
C 網路程式設計
首先我們解釋一下在網路程式設計時候,經常遇到的幾個概念 同步 synchronous 非同步 asynchronous 阻塞 block 和非阻塞 unblock 所謂同步方式,就是傳送方傳送資料報以後,不等接受方響應,就接著傳送下乙個資料報。非同步方式就是當傳送方傳送乙個資料報以後,一直等到接受方...
C 網路程式設計
1 ip網路中的每台主機都有乙個ip位址 它是邏輯位址 網際網路上的ip位址具有全球唯一性 4個位元組,192.168.0.16 2 osi將網路分為 tcp ip模型 應用層 應用層 表示層會話層 傳輸層 傳輸層 網路層 網路層 資料鏈路層 網路介面 物理層相同層次之間不可以直接通訊,是虛擬通訊。...
c 網路程式設計
microsoft.framework為應用程式訪問inter 提供了分層的 可擴充套件的以及受管轄的網路服務,其名字空間system.和system.sockets包含豐富的類可以開發多種網路應用程式。類採用的分層結構允許應用程式在不同的控制級別上訪問網路,開發人員可以根據需要選擇針對不同的級別編...