常用套接字 API 原型

常用套接字 API 函数原型

#include <sys/socket.h>

int socket(int af, int type, int protocol);
// af:一个地址描述。常用AF_INET(支持TCP和UDP)。
// type:指定socket类型。TCP(SOCK_STREAM)、UDP(SOCK_DGRAM)。
// protocal:指定协议。如调用者不想指定,可用0。常用协议有IPPROTP_TCP、IPPROTO_UDP、IPPROTO_STCP。
// 成功返回新套接字的描述,失败返回负数。

int connect(int sockfd, struct sockaddr* serv_addr, socklen_t addrlen);
// 成功返回0,失败返回负数

int bind(int sockfd, struct sockaddr* my_addr, sockelen_t addrlen);
// 成功返回0,失败返回负数

int listen(int sockfd, intbacklog);
// 成功返回0,失败返回负数

int accept(int sockfd, struct sockaddr* addr, socklen_t* addrlen);
// 成功返回套接字的描述,错误返回负数

int getsockname(int sockfd, struct sockaddr* local_addr, socklen_t* addrlen);
// 成功返回0,失败返回-1

int  getpeername(int sockfd, struct sockaddr* peer_addr, socklen_t* addrlen);
// 成功返回0,失败返回-1

int shutdown(int sockfd, int howto);
// 成功返回0, 失败返回-1
// howto:
// SHUT_RD、SHUT_WR、SHUT_RDWR
#include <unistd.h>

int read(int sockfd, void* buf, size_t bufsize);
// 成功返回读取字节数,失败返回-1,若在调read之前已到达文件末尾,则返回0

int write(int sockfd, void* buf, size_t nbyte);
// 成功返回实际写入的字节数,失败返回-1 

#include <netinet/in.h>

uint16_t htons(uint16_t host16bitvalue);
uint32_t htonl(uint32_t host32bitvalue);

uint16_t ntohs(uint16_t net16bitvalue);
uint32_t ntohl(uint32_t net32bitvaule);
#include <string.h>

void bzero(void* dest, size_t nbytes);
void bcopy(const void* src, void* dest, size_t nbytes);
int bcmp(const void* ptr1, const void* ptr2, size_t nbytes);

void* memset(void* dest, int c, size_t len);
void* memcpy(void* dest, const void* src, size_t nbytes);
int memcpy(const void* ptr1, const void* ptr2, size_t nbytes);
#include <arpa/inet.h>

int inet_aton(const char* strptr, struct in_addr* addrptr);

in_addr_t inet_addr(const char* strptr);

char* inet_ntoa(struct in_addr inaddr);

int inet_pton(int family, const char* strptr, void* addrptr);

const char* inet_ntop(int family, const void* addrptr, char* strptr, size_t len);
#include <sys/wait.h>

pid_t wait(int* statloc);

pid_t waitpid(pid_t pid, int* statloc, int options);
// 成功返回进程id,失败返回0或-1
#include <sys/select.h>
#include <signal.h>
#include <sys/time.h>

int select(int maxfdp1, fd_set *readset, fd_set* writeset, fd_set* exceptset, const struct timeval* timeout);
// 若有就绪描述符则为其数目,若超时则为0,若出错则为-1

void FD_ZERO(fd_set* fdset); // clear all bits in fdset
void FD_SET(int fd, fd_set* fdset); // turn on the bit for fd in fdset
void FD_CLR(int fd, fd_set* fdset); // turn off the bit for fd in fdset
int FD_ISSET(int fd, fd_set* fdset); // is the bit for fd on in fdset ?

int pselect(int maxfdp1, fd_set* readset, fd_set* writeset, fd_set* exceptset, const struct timespec* timeout, const sigset_t* sigmask);
// 若有就绪描述符则为其数目,若超时则为0,若出错则为-1
#include <poll.h>

int poll(struct pollfd* fdarray, unsigned long fds, int timeout);
// 若有就绪描述符则为其数目,若超时则为0,若出错则为-1
#include <signal.h>

int sigaction(int signum, const struct sigaction* act, struct sigaction* oldact);
// 失败返回负数

typedef void (* Sigfunc) (int);
Sigfunc signal(int signo, Sigfunc func);
// 失败返回 SIG_ERR,成功返回指向旧处理函数的指针
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
fortune 是一个超媒体 API 原型框架,实现 JSON API 规范。fortune 具有一个模块化的持久层,里面包括了 NeDB (内联), MongoDB, MySQL, Postgres 和 SQLite 的适配器,可以查看 引导手册 了解如何使用。Fortune 实现了所有 JSON API 的规范,还有一些其他的特性:使用简单, Fortune 提供免费的路线控制和数据库交互,不需要用户制作管道。关联和双向关系的映射,不需要用户管理资源之间的关联关系。在编辑前或者阅览之后,自动变换资源,实现特定的应用逻辑fortune 没有相关的授权和身份验证,你可以在你的应用中实现,可以查看样板:keystore.js 。用 npm 安装:  $ npm install fortune示例代码:import fortune from 'fortune' import http from 'http' const store = fortune.create() // The `net.http` function returns a listener function which does content // negotiation, parses headers, and maps the response to an HTTP response. const server = http.createServer(fortune.net.http(store)) store.defineType('user', {   name: { type: String },   // Following and followers are inversely related (many-to-many).   following: { link: 'user', inverse: 'followers', isArray: true },   followers: { link: 'user', inverse: 'following', isArray: true },   // Many-to-one relationship of user posts to post author.   posts: { link: 'post', inverse: 'author', isArray: true } }) store.defineType('post', {   message: { type: String },   // One-to-many relationship of post author to user posts.   author: { link: 'user', inverse: 'posts' } }) store.connect().then(() => server.listen(1337)) 标签:Fortune

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值