linux套接字基礎
sean
(一)套接字位址資料結構
1 針對各種通訊域
struct sockaddr ;
2 針對internet通訊域
struct sockaddr_in ;
3 專門用來儲存ip位址
linux版本
struct in_addr
windows版本
struct in_addr s_un_b;
struct s_un_w;
u_long s_addr;
} s_un;
#define s_addr s_un.s_addr
#define s_host s_un.s_un_b.s_b2
#define s_net
s_un.s_un_b.s_b1
#define s_imp
s_un.s_un_w.s_w2
#define s_impno s_un.s_un_b.s_b4
#define s_lh
s_un.s_un_b.s_b3};
(二)主機位元組序與網路位元組序的轉換
u_long pascal far htonl (u_long hostlong);
u_short pascal far htons (u_short hostshort);
u_long pascal far ntohl (u_long netlong);
u_short pascal far ntohs (u_short netshort);
(三)點分十進位制ip的轉換
unsigned long pascal far inet_addr (const char far * cp);
char far * pascal far inet_ntoa (struct in_addr in);
(四)儲存主機資訊的資料結構
struct hostent ;
相關函式
struct hostent far * pascal far gethostbyname(const char far * name);
struct hostent far * pascal far gethostbyaddr(const char far * addr,int len, int type);
int pascal far gethostname (char far * name, int namelen);
(五)套接字工作的過程
(1)流式套接字
建立套接字
socket pascal far socket (int af, int type, int protocol);
繫結套截字
int pascal far bind (socket s, const struct sockaddr far *addr, int namelen);
監聽int pascal far listen (socket s, int backlog);
與遠端伺服器建立連線
int pascal far connect (socket s, const struct sockaddr far *name, int namelen);
響應套截字,成功返回的套截字與連線使用者收發資料
socket pascal far accept (socket s, struct sockaddr far *addr, int far *addrlen);
傳送/接收資料
int pascal far send (socket s, const char far * buf, int len, int flags);
int pascal far recv (socket s, char far * buf, int len, int flags);
關閉套截字
int pascal far closesocket (socket s);
(2)資料報套接字
int pascal far sendto (socket s, const char far * buf, int len, int flags,
const struct sockaddr far *to, int tolen);
int pascal far recvfrom (socket s, char far * buf, int len, int flags,
struct sockaddr far *from, int far * fromlen);
(3)原始套截字,訪問基層的網路協議
#define ipproto_ip
0 #define ipproto_icmp
1 #define ipproto_igmp
2 (注:以上所有資料結構以vc6.0為藍本)
Linux套接字基礎程式設計
所謂套接字,其實就是通訊端點的抽象。而套接字程式設計,就是解決伺服器端跟客戶端之間的通訊問題。先說伺服器端,簡單的概括,分為四步 1.建立套接字 int socket int domain,int type,int protocol socket函式的第1個引數表示的是通訊域,詳情見下表 套接字域描...
套接字基礎
1 什麼是套接字?2 internet 套接字的兩種型別 3 網路理論 4 結構體 5 本機轉換 6 ip 位址和如何處理它們 7 socket 函式 8 bind 函式 9 connect 函式 10 listen 函式 11 accept 函式 12 send 和recv 函式 13 sendt...
網路基礎 套接字
套接字 應用層通過傳輸層進行通訊時,tcp和udp會同時遇到要為多個應用程序提供併發服務的問題,多個tcp鏈結或者應用程式可能需要通過乙個tcp協議埠傳輸資料,為了將不同的應用程式區分開來,作業系統為應用程式與tcp udp互動提供了介面,成為套接字。埠號 源埠號 目的埠號 傳輸層協議 tcp ip...