linux套接字基礎

2021-08-15 17:58:43 字數 2386 閱讀 8198

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...