UNP函数笔记七: 基本SCTP套接字编程
来源:互联网 发布:c语言atm机系统 编辑:程序博客网 时间:2024/05/11 09:05
第九章 基本SCTP套接字编程:
#include <netinet/sctp.h>int sctp_bindx(int sockfd, const struct sockaddr * addrs, int addrcnt, int flags); flags: SCTP_BINDX_ADD_ADDR, SCTP_BINDX_REM_ADDR success return 0, error return -1#include <netinet/sctp.h>int sctp_connectx(int sockfd, const struct sockaddr * addrs, int addrcnt); success return 0, error return -1#include <netinet/sctp.h>int sctp_getpaddrs(int sockfd, sctp_assoc_t id, struct sockaddr ** addrs); success return peer-addr-count, error return -1#include <netinet/sctp.h>void sctp_freepaddrs(struct sockaddr * addrs);#include <netinet/sctp.h>int sctp_getladdrs(int sockfd, sctp_assoc_t id, struct sockaddr ** addrs); success return local-addr-count, error return -1#include <netinet/sctp.h>void sctp_freeladdrs(struct sockaddr * addrs);#include <netinet/sctp.h>ssize_t sctp_sendmsg(int sockfd, const void * msg, size_t msgsz, const struct sockaddr * to, socklen_t tolen, uint32_t ppid, uint32_t flags, uint16_t stream, uint32_t timetolive, uint32_t context); timetolive, ms success return write-bytes, error return -1#include <netinet/sctp.h>ssize_t sctp_recvmsg(int sockfd, void * msg, size_t msgsz, struct sockaddr * from, socklen_t * fromlen, struct sctp_sndrcvinfo * sinfo, int * msg_flags); success return read-bytes, error return -1#include <netinet/sctp.h>int sctp_opt_info(int sockfd, sctp_assoc_t assoc_id, int opt, void * arg, socklen_t * siz); success return 0, error return -1#include <netinet/sctp.h>int sctp_peeloff(int sockfd, sctp_assoc_t id); success return new-sockfd, error return -1struct sctp_tlv { u_int16_t sn_type; u_int16_t sn_flags; u_int32_t sn_length;};sn_type: sctp-socket-option: SCTP_ASSOC_CHANGE sctp_association_event SCTP_PEER_ADDR_CHANGE sctp_address_event SCTP_REMOTE_ERROR sctp_peer_error_event SCTP_SEND_FAILED sctp_send_failure_event SCTP_SHUTDOWN_EVENT sctp_shutdown_event SCTP_ADAPTION_INDICATION sctp_adaption_layer_event SCTP_PARTIAL_DELIVERY_EVENT sctp_partial_delivery_event sctp_data_io_event (default open)/* notification event */union sctp_notification { struct sctp_tlv sn_header; struct sctp_assoc_change sn_assoc_change; struct sctp_paddr_change sn_paddr_change; struct sctp_remote_error sn_remote_error; struct sctp_send_failed sn_send_failed; struct sctp_shutdown_event sn_shutdown_event; struct sctp_adaption_event sn_adaption_event; struct sctp_pdapi_event sn_pdapi_event;};SCTP_ASSOC_CHANGE:struct sctp_assoc_change { u_int16_t sac_type; u_int16_t sac_flags; u_int32_t sac_length; u_int16_t sac_state; u_int16_t sac_error; u_int16_t sac_outbound_streams; u_int16_t sac_inbound_streams; sctp_assoc_t sac_assoc_id; uint8_t sac_info[];};sac_state: SCTP_COMM_UP /* have new connect */ SCTP_COMM_LOST /* close a connect */ SCTP_RESTART /* remote restart */ SCTP_SHUTDOWN_COMP /* shutdown complete */ SCTP_CANT_STR_ASSOC /* can not get ack */SCTP_PEER_ADDR_CHANGE:struct sctp_paddr_change { u_int16_t spc_type; u_int16_t spc_flags; u_int32_t spc_length; struct sockaddr_storage spc_aaddr; u_int32_t spc_state; u_int32_t spc_error; sctp_assoc_t spc_assoc_id;};spc_state: SCTP_ADDR_ADDED /* address adds to connection */ SCTP_ADDR_AVAILABLE /* address becomes reachable */ SCTP_ADDR_CONFIRMED /* address is valid */ SCTP_ADDR_MADE_PRIM /* address becomes the primary address */ SCTP_ADDR_REMOVED /* address removed from connection */ SCTP_ADDR_UNREACHABLE /* address becomes unreachable */SCTP_REMOTE_ERROR:struct sctp_remote_error { u_int16_t sre_type; u_int16_t sre_flags; u_int32_t sre_length; u_int16_t sre_error; sctp_assoc_t sre_assoc_id; u_int8_t sre_data[];};SCTP_SEND_FAILED:struct sctp_send_failed { u_int16_t ssf_type; u_int16_t ssf_flags; u_int32_t ssf_length; u_int32_t ssf_error; struct sctp_sndrcvinfo ssf_info; sctp_assoc_t ssf_assoc_id; u_int8_t ssf_data[];};ssf_flags: SCTP_DATA_UNSENT SCTP_DATA_SENTSCTP_SHUTDOWN_EVENT:struct sctp_shutdown_event { u_int16_t sse_type; u_int16_t sse_flags; u_int32_t sse_length; sctp_assoc_t sse_assoc_id;};SCTP_ADAPTION_INDICATION:struct sctp_adaption_event { u_int16_t sai_type; u_int16_t sai_flags; u_int32_t sai_length; u_int32_t sai_adaption_ind; sctp_assoc_t sai_assoc_id;};SCTP_PARTIAL_DELIVERY_EVENT:struct sctp_pdapi_event { u_int16_t pdapi_type; u_int16_t pdapi_flags; u_int32_t pdapi_length; u_int32_t pdapi_indication; sctp_assoc_t pdapi_assoc_id;};pdapi_indication: SCTP_PARTIAL_DELIVERY_ABORTED
- UNP函数笔记七: 基本SCTP套接字编程
- UNP函数笔记二: 基本TCP套接字编程
- UNP函数笔记六: 基本UDP套接字编程
- UNP笔记(2)——基本套接字编程
- UNP卷一学习笔记:基本UDP套接字编程
- UNP函数笔记一: 套接字编程简介
- UNP学习:基本套接字编程
- UNP函数笔记五: 套接字选项
- UNIX网络编程——基本SCTP套接字编程
- UNP学习笔记(第四章 基本TCP套接字编程)
- UNP学习笔记(第八章 基本UDP套接字编程)
- UNP总结 Chapter 4 基本TCP套接字编程
- UNP总结 Chapter 8 基本UDP套接字编程
- UNP总结 Chapter 4 基本TCP套接字编程
- UNP——Chapter 4:基本TCP套接字编程
- UNP卷一学习笔记:基本TCP套接字
- UNP卷1:第八章(基本UNP套接字编程)
- UNP学习笔记(第三章:套接字编程简介)
- Warning::'XXX' will be initialized later
- Ubuntu 11.10 Linux 3D桌面完全教程,显卡驱动安装方法,compiz特效介绍,常见问题解答
- 年纪大了,记忆力越来越差,正式开个博,记录自己看的书和一些经验知识。
- dorado7运行时虚拟机出错解决办法
- C# 实现多线程的同步方法详解
- UNP函数笔记七: 基本SCTP套接字编程
- TCP/IP详解读书笔记一 IP/ARP/RARP/ICMP
- sql行转列
- webdoclet任务src的指定
- 堆和栈的区别 (转贴)
- 浅谈C# 中的lock 方法与Monitor 类的关系_以及同步与互斥
- 哪些人需要时间管理
- 浅谈ThreadPool 线程池
- 关于STL的有用链接