- socket:创建一个socket,目前仅支持udp和tcp两种类型
- close:关闭一个socket,释放当前占用的协议栈资源
- connect:与目标tcp服务器建立连接(阻塞型)或绑定一个固定的udp服务器地址
- connect_nb:与目标tcp服务器建立连接(非阻塞型)
- is_tcp_connected:获取当前tcp链路的连接状态
- send:数据发送函数,tcp链路下为阻塞型
- send_nb:数据发送函数,非阻塞型
- is_tcp_send_ok:数据是否已成功送达tcp链路的对端(收到tcp ack报文)
- sendto:udp数据发送函数,发送数据到指定目标地址
- recv:数据接收函数,udp/tcp链路通用
- recvfrom:数据接收函数,用于udp链路,接收数据的同时函数会返回数据源的地址信息
- socket_set_rcv_timeout:设定recv()函数接收等待的时长,单位:秒
- bind:绑定一个固定端口、地址
- listen:tcp服务器进入监听状态
- accept:接受一个到达的tcp连接请求
- tcpsrv_recv_poll:tcp服务器专用函数,等待任意一个或多个tcp客户端数据到达信号
- socket_get_last_error:获取socket最近一次发生的错误信息
- socket_get_last_error_code:获取socket最近一次发生的错误编码
创建一个socket,支持udp和tcp两种类型,即:SOCK_DGRAM和SOCK_STREAM 。注意,不使用时一定要调用close()函数关闭,以释放其占用的协议栈相关资源 。
原型
SOCKET socket(INT family, INT type, INT protocol, EN_ONPSERR *penErr);
入口参数
- family:目前仅支持IPv4地址,即AF_INET,其它地址族如AF_INET6之类的不支持
- type:指定socket类型,支持SOCK_STREAM和SOCK_DGRAM两种类型,前者为tcp,后者为udp
- protocol:未使用,固定为0
- penErr:指向错误编码的指针,当socket()函数执行失败,该参数用于接收实际的错误码
执行成功返回socket句柄,失败返回INVALID_SOCKET,具体的错误信息参见penErr参数返回的错误码 。
示例
EN_ONPSERR enErr;//* tcpSOCKET hSocket = socket(AF_INET, SOCK_STREAM, 0, &enErr);if(INVALID_SOCKET == hSocket) //* 返回一个无效的socketprintf("%s\r\n", onps_error(enErr)); //*打印错误信息//* udpSOCKET hSocket = socket(AF_INET, SOCK_DGRAM, 0, &enErr);……
返回目录close功能
关闭socket,释放占用的协议栈资源 。
原型
void close(SOCKET socket);
入口参数
- socket:要关闭的socket句柄
无
示例
EN_ONPSERR enErr;SOCKET hSocket = socket(AF_INET, SOCK_STREAM, 0, &enErr);……if(INVALID_SOCKET != hSocket)close(hSocket);
返回目录connect功能
用于tcp类型的socket时,其功能为与目标服务器建立tcp连接,阻塞型;用于udp类型的socket时,其功能为绑定一个固定的目标通讯地址,udp通讯均与这个固定地址进行 。
原型
INT connect(SOCKET socket, const CHAR *srv_ip, USHORT srv_port, INT nConnTimeout);
入口参数
- socket:要进行connect操作的socket句柄
- srv_ip:目标服务器地址
- srv_port:目标服务器端口
- nConnTimeout:仅用于tcp通讯,指定连接超时时间(单位:秒),参数值如小于等于0则协议栈会采用缺省值,该值由TCP_CONN_TIMEOUT宏指定(参见sys_config.h);udp通讯未使用这个参数,可以指定任意一个值
0:连接成功
-1:连接失败,具体的错误信息通过onps_get_last_error()获得
示例
EN_ONPSERR enErr;SOCKET hSocket = socket(AF_INET, SOCK_STREAM, 0, &enErr);if(INVALID_SOCKET == hSocket){printf("%s\r\n", onps_error(enErr));return;}if(!connect(hSocket, "47.92.239.107", 6410, 10)){//* 连接成功,在这里添加你的自定义代码……}else{//* 连接失败,打印错误信息printf("%s\r\n", onps_get_last_error(hSocket, NULL));}……close(hSocket);
经验总结扩展阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 索尼wf1000xm4怎么连接_索尼wf1000xm4使用说明
- 3 onps栈移植说明——添加网卡
- 2 onps栈移植说明——编译器及os适配层移植
- 1 onps栈移植说明——onps栈的配置及裁剪
- 亲爱的客栈杨紫乔欣是哪期?
- <一>从指令角度了解函数堆栈调用过程
- 漫步者funbuds怎么配对_漫步者funbuds使用说明
- 3 Python全栈工程师之从网页搭建入门到Flask全栈项目实战 - 入门Flask微框架
- 全自动洗衣机怎么用 全自动洗衣机使用说明
- 都卷Java,你看看你得学多少技术栈才能工作!