Socket基本API 總結

2021-07-03 05:00:41 字數 2595 閱讀 3826

套接字建立過程:

srever:

1socket建立套接字

2bind ip和port

3listen

4accept

5read/write

6close

client:

1socket

2connect

3read/write

4close

int

socket(int domain, int type, int protocol);

//失敗返回-1,成功返回檔案描述符

//domain 套接字協議族 type資料型別 protocol通訊協議資訊

intbind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen);

intlisten(int sockfd, int backlog);

intaccept(int sockfd, struct sockaddr *addr,socklen_t *addrlen);

intconnect(int sockfd, struct,sockaddr *serv_addr, socklen_t, addrlen);

/*成功返回0,失敗返回-1

*/

協議族:

pf_inet, pf_inet6,pf_local等

套接字型別:

sock_stream 面向連線

sock_dgram 面向訊息

檔案描述符:

int open(const

char *path, int flag);

//path 位址,flag開啟方式

int close(int fd);

//成功返回0,失敗返回-1

//寫入檔案:

ssize_t write(int fd, const

void *buf, size_t, ntypes);

//失敗返回-1,成功返回寫入的位元組數

//讀取檔案

ssize_t read(int fd, void *buf, size_t nbytes);

//失敗返回-1,成功返回接收的位元組數

ipv4結構體

struct sockaddr_in

;struct in_addr

位元組序轉換:

unsigned

short htons(unsigned

short);

unsigned

short ntohs(unsigned

short);

unsigned

short htonl(unsigned

short);

unsigned

short ntohl(unsigned

short);

/*h代表主機(host)位元組序

n代表網路(network)位元組序

s是short

l是long

*/in_addr_t inet_addr(const

char *string);

//返回32位大端整數值,失敗返回inaddr_none

int inet_aton(const

char *string, struct in_addr * addr);

//成功返回1,失敗返回0

//將字串32位ip位址轉換為整數

char *inet_ntoa(struct in_addr adr);

//成功返回位址值,失敗返回-1

//將整數ip轉換為字串

udp函式

ssize_t sendto(int sock, void *buff, size_t ntypes, int flags, struct sockaddr *to, socklen_t addrlen);

ssize_t recvfrom(int sock, void *buff, size_t nbytes, int flags, struct sockaddr *from, socklen_t *addrlen);

斷開函式shutdown

int shutdown(int sock, int howto);

/*第二個引數是斷開方式:

shut_rd 斷開輸入流

shut_wr 斷開輸出流

shut_rdwr 同時斷開o/i流

*/

ip與網域名稱的轉換

struct hostent * gethostbyname(const

char *hostname);

//通過網域名稱獲得ip

struct hostent * gethostbyaddr(const

char *addr, socklen_t len, int family);

//通過ip獲得域相關資訊

struct hostent

;

socket程式設計API總結

一 注釋 1.cpp view plain copy include include include include include include include include define servport 3333 define backlog 10 define max connected...

Socket程式設計 API

socket可以看成是使用者程序與核心網路協議棧的程式設計介面 socket不僅可以用於本機的程序間通訊,還可以用於網路上不同主機間的通訊。ipv4套介面位址結構 ipv4套介面位址結構通常也稱為 網際套接字位址結構 它以 sockaddr in 命名,定義在標頭檔案中 struct sockadd...

Socket基本程式設計

socket 基本程式設計 服務端 using system.using system.sockets using system.text using system.threading thread mythread socket socket 清理所有正在使用的資源。protected overr...