网络编程之select

网络编程学习模式,有select、poll、epoll等方式,测试使用三种方式来测试网络连接。

/*


*/


#ifndef _CCNET_H
#define _CCNET_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <unistd.h>
#include <assert.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>


//@file
//@brief 网络处理函数封装

/**
* @brief 带超时(微秒级)的tcp连接函数
* @param host : 连接主机名,不能为NULL
* @param port : 连接主机监听端口
* @param timeout : 最大超时时间(微妙)的指针,不能为NULL,连接成功timeout将被设置为剩余的时间
* @param name : 连接模块名
* @return -1 连接失败或超时
* @return socket 连接成功的socket
*/
int CCConnectO(const char *host, int port, int *timeout, const char *name);

/**
* @brief 带超时(微秒级)的socket读操作
* @param sock : 已连接的socket
* @param buf : 读入的空间
* @param len : 读入的最大长度
* @param timeout : 最大超时时间(微妙)的指针,不能为NULL,函数返回后timeout将被设置为剩余的时间
* @param name : 连接模块名
* @return -1 读失败
* @return 实际读到的字符数
*/
int CCReadO(int sock, void *buf, ssize_t len, int *timeout, const char *name);

/**
* @brief 带超时(微秒级)的socket读操作,直到读到的内容中出现了stop串,或者读到len长度,或超时。
* @param sock : 已连接的socket
* @param buf : 读入的空间
* @param len : 读入的最大长度
* @param timeout : 最大超时时间(微妙)的指针,不能为NULL,函数返回后timeout将被设置为剩余的时间
* @param name : 连接模块名
* @param stop : 当读到内容中出现stop字串时,停止读
* @return -1 读失败
* @return 实际读到的字符数
*/
int CCReadOS(int sock, void *buf, ssize_t len, int *timeout, const char *name,
const char *stop);

/**
* @brief 带超时(微秒级)的socket写操作
* @param sock : 已连接的socket
* @param buf : 要写出的空间
* @param len : 要写出的最大长度
* @param timeout : 最大超时时间(微妙)的指针,不能为NULL,函数返回后timeout将被设置为剩余的时间
* @param name : 连接模块名
* @return -1 读失败
* @return 实际写出的字符数
*/
int CCWriteO(int sock, void *buf, ssize_t len, int *timeout,
const char *name);

/**
* @brief 关闭socket
* @param fd : 已连接的socket
* @return -1 关闭失败
* @return 0 成功关闭
*/
int CCClose(int fd);

/**
* @brief 开启tcp监听端口
* @param port : 端口
* @param queue : listen等待队列长度
* @return -1 失败
* @return 成功返回开启监听的fd
*/
int CCTcpListen(const char *host, int port, int queue);

#endif // _CCNET_H
/* vim: create noet: */

转载于:https://www.cnblogs.com/cyblogs/p/11295568.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值