日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

socket 2.草稿。

發(fā)布時(shí)間:2024/8/26 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 socket 2.草稿。 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

字序轉(zhuǎn)換。
htonl
htons
ntohl
ntohs

struck sockaddr
{
sa_family_t sa_family;
char sa_data[];
}

struck in_addr
{
in_addr_t s_addr;
}

struck sockaddr_in
{
sa_family_t sa_family;
in_port_t sin_port;
struct in_addr sin_addr;
}

二進(jìn)制和點(diǎn)分轉(zhuǎn)換。
inet_ntop inet_pton
#include <arpa/inet.h>
const char *inet_ntop(int domain, const void *restrict addr,char *restrict str, socklen_t size);
Returns: pointer to address string on success, NULL on error

int inet_pton(int domain, const char *restrict str,void *restrict addr);
Returns: 1 on success, 0 if the format is invalid, or ?1 on error

地址查詢。
struct hostent {
char *h_name; /* name of host */
char **h_aliases; /* pointer to alternate host name array */
int h_addrtype; /* address type */
int h_length; /* length in bytes of address */
char **h_addr_list; /* pointer to array of network addresses */
.
.
.
};


#include <netdb.h>
struct hostent *gethostent(void);
Returns: pointer if OK, NULL on error
void sethostent(int stayopen);
void endhostent(void);


早期函數(shù):gethostbyname and gethostbyaddr


struct netent {
char *n_name; /* network name */
char **n_aliases; /* alternate network name array pointer */
int n_addrtype; /* address type */
uint32_t n_net; /* network number */
.
.
.
};

struct netent *getnetbyaddr(uint32_t net, int type);
struct netent *getnetbyname(const char *name);
struct netent *getnetent(void);
All return: pointer if OK, NULL on error
void setnetent(int stayopen);
void endnetent(void);


服務(wù)和名字之間的轉(zhuǎn)換。
struct protoent {
char *p_name; /* protocol name */
char **p_aliases; /* pointer to alternate protocol name array */
int p_proto; /* protocol number */
.
.
.
};

#include <netdb.h>
struct protoent *getprotobyname(const char *name);
struct protoent *getprotobynumber(int proto);
struct protoent *getprotoent(void);
All return: pointer if OK, NULL on error
void setprotoent(int stayopen);
void endprotoent(void);


查詢服務(wù)。
struct servent {
char *s_name; /* service name */
char **s_aliases; /* pointer to alternate service name array */
int s_port; /* port number */
char *s_proto; /* name of protocol */
.
.
.
};


#include <netdb.h>
struct servent *getservbyname(const char *name, const char *proto);
struct servent *getservbyport(int port, const char *proto);
struct servent *getservent(void);
All return: pointer if OK, NULL on error
void setservent(int stayopen);
void endservent(void);


//根據(jù)服務(wù)和主機(jī)名,返回一個(gè)節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)是assrinfo的鏈表。
#include <sys/socket.h>
#include <netdb.h>

struct addrinfo {
int ai_flags; /* customize behavior */
int ai_family; /* address family */
int ai_socktype; /* socket type */
int ai_protocol; /* protocol */
socklen_t ai_addrlen; /* length in bytes of address */
struct sockaddr *ai_addr; /* address */
char *ai_canonname; /* canonical name of host */
struct addrinfo *ai_next; /* next in list */
.
.
.
};

int getaddrinfo(const char *restrict host,
const char *restrict service,
const struct addrinfo *restrict hint,
struct addrinfo **restrict res);
Returns: 0 if OK, nonzero error code on error
void freeaddrinfo(struct addrinfo *ai);

//將地址轉(zhuǎn)換為主機(jī)名和服務(wù)名
#include <sys/socket.h>
#include <netdb.h>
int getnameinfo(const struct sockaddr *restrict addr, socklen_t alen,
char *restrict host, socklen_t hostlen,
char *restrict service, socklen_t servlen, int flags);
Returns: 0 if OK, nonzero on error


//通過socket得到address。
#include <sys/socket.h>
int getsockname(int sockfd, struct sockaddr *restrict addr,
socklen_t *restrict alenp);
Returns: 0 if OK, ?1 on error

//如果已經(jīng)連接。還可以通過socket得到對(duì)端address。

#include <sys/socket.h>
int getpeername(int sockfd, struct sockaddr *restrict addr,
socklen_t *restrict alenp);
Returns: 0 if OK, ?1 on error


//連接。
#include <sys/socket.h>
int connect(int sockfd, const struct sockaddr *addr, socklen_t len);
Returns: 0 if OK, ?1 on error


//監(jiān)聽。
//#include <sys/socket.h>
int listen(int sockfd, int backlog);
Returns: 0 if OK, ?1 on error


//接受。
#include <sys/socket.h>
int accept(int sockfd, struct sockaddr *restrict addr,
socklen_t *restrict len);
Returns: file (socket) descriptor if OK, ?1 on error

//數(shù)據(jù)傳輸。
#include <sys/socket.h>
ssize_t send(int sockfd, const void *buf, size_t nbytes, int flags);
Returns: number of bytes sent if OK, ?1 on error


//數(shù)據(jù)傳輸。非可靠連接
#include <sys/socket.h>
ssize_t sendto(int sockfd, const void *buf, size_t nbytes, int flags,
const struct sockaddr *destaddr, socklen_t destlen);
Returns: number of bytes sent if OK, ?1 on error

//更多選擇。
#include <sys/socket.h>
ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags);
Returns: number of bytes sent if OK, ?1 on error

//接受數(shù)據(jù)。
#include <sys/socket.h>
ssize_t recv(int sockfd, void *buf, size_t nbytes, int flags);
Returns: length of message in bytes,
0 if no messages are available and peer has done an orderly shutdown,

//更多選項(xiàng)。
#include <sys/socket.h>
ssize_t recvfrom(int sockfd, void *restrict buf, size_t len, int flags,
struct sockaddr *restrict addr,
socklen_t *restrict addrlen);
Returns: length of message in bytes,
0 if no messages are available and peer has done an orderly shutdown,
or ?1 on error
or ?1 on error

//
#include <sys/socket.h>
ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags);
Returns: length of message in bytes,
0 if no messages are available and peer has done an orderly shutdown,

?

//socket option

#include <sys/socket.h>
int setsockopt(int sockfd, int level, int option, const void *val,
socklen_t len);
Returns: 0 if OK, ?1 on error

//帶外數(shù)據(jù)。

#include <sys/socket.h>
int sockatmark(int sockfd);
Returns: 1 if at mark, 0 if not at mark, ?1 on error

//非阻塞和異步。

轉(zhuǎn)載于:https://www.cnblogs.com/lsfv/p/6350331.html

總結(jié)

以上是生活随笔為你收集整理的socket 2.草稿。的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。