⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sip_util.h

📁 linux下的sip voip程序
💻 H
字号:
#ifndef _SIP_UTILITY_H#define _SIP_UTILITY_H#include<stdio.h>#include<string.h>#include<stdlib.h>#include<sys/types.h>#include<unistd.h>#include<netdb.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<sys/time.h>#define MAX_MESSAGE          21000      /* SIPメッセ〖ジの呵络矢机眶 */#define MAX_FIELD            1024       /* ヘッダ〖フィ〖ルド1乖の呵络矢机眶 */#define SIP_PORT             5060       /* SIPで蝗脱するポ〖ト戎规 */#define SIP_VERSION          "SIP/2.0"  /* SIPのバ〖ジョン */#define PROTOCOL_UDP         "UDP"      /* メッセ〖ジ啪流脱プロトコル */#define MAX_COUNT            70         /* Max-Frowardsの猛 */#define MAX_NAME             256        /* ホスト叹の呵络矢机眶 */#define MAX_EXPIRES          7200       /* REGISTERの铜跟箕粗 */#define UNREGISTER_EXPIRES   0          /* 判峡缩久脱のExpiresの猛 */#define ADDR_SIZE            16         /* IPアドレスの呵络墓 */#define CONFIG_FILE_NAME     "sip.conf"#define CONTENT_TYPE         "application/sdp"#define IP_TYPE              "IP4"#define HEADER_VIA           "Via: "#define HEADER_MAXFORWARDS   "Max-Forwards: "#define HEADER_FROM          "From: "#define HEADER_TO            "To: "#define HEADER_CALLID        "Call-ID: "#define HEADER_CSEQ          "CSeq: "#define HEADER_CONTACT       "Contact: "#define HEADER_CONTENTTYPE   "Content-Type: "#define HEADER_CONTENTLENGTH "Content-Length: "#define HEADER_EXPIRES       "Expires: "#define METHOD_REGISTER      "REGISTER"#define METHOD_INVITE        "INVITE"#define METHOD_TRYING        "100 Trying"#define METHOD_RINGING       "180 Ringing"#define METHOD_ACK           "ACK"#define METHOD_OK            "200 OK"#define METHOD_BYE           "BYE"#define METHOD_CANCEL        "CANCEL"#define METHOD_BUSY          "486 Busy Here"#define METHOD_TERMINATE     "487 Request Terminate"#define CODEC_AUDIO          "PCMU"     /* G.711 */#define AUDIO_RATE           8000       /* 8000samples/sec */#define RTPTYPE              0          /* PCMUのペイロ〖ドタイプ */#define RANDOM(x)            (rand()%(x))#define debug(s)             printf(s)/* SIPサ〖バ蝗脱、踏蝗脱の惰侍 */enum registerflag{    eRNull = 0,             /* 踏蝗脱 */    eRRegister,             /* 蝗脱している */};/* 券慨荚、缅慨荚の惰侍 */enum callflag{    eCNull = 0,             /* 介袋猛 */    eCSender,               /* 券慨荚 */    eCReceiver              /* 缅慨荚 */};/* RTP流慨 */enum send_flag{    null = 0,    ok ,    ng };/* SIPスタックの觉轮 */enum callstate{    eSNull = 0,             /* 介袋觉轮 */    eSRegister,             /* REGISTER流慨 */    eSIdle,                 /* REGISTER窗位 */    eSWaitBusy,             /* 儡鲁借妄面 */    eSBusy,                 /* 奶厦面 */    eSWaitDisc,             /* 磊们借妄面 */    eSUnRegister            /* REGISTER豺近借妄面 */};/* SIPメッセ〖ジのメソッド */enum method{    Method_Register = 0,    /* REGISTER */    Method_Invite,          /* INVITE */    Method_Ack,             /* ACK */    Method_Bye,             /* BYE */    Method_Cancel,          /* CANCEL */    Method_Trying,          /* 100 Trying */    Method_Ringing,         /* 180 Ringing */    Method_OK,              /* 200 OK */    Method_Busy,            /* 486 Busy Here */    Method_RequestTerminate /* 487 Request Terminate */};/* メッセ〖ジの柒推を呈羌する菇陇挛 */typedef struct{    char save_Msg[MAX_MESSAGE];      /* SIPメッセ〖ジ */    char save_beforMsg[MAX_MESSAGE]; /* シ〖ケンスで1つ涟に瘦赂したSIPメッセ〖ジ */    char save_Via[MAX_FIELD];        /* 瘦赂したViaヘッダ */    char save_Via2nd[MAX_FIELD];     /* 瘦赂したViaヘッダ2 */    char save_From[MAX_FIELD];       /* 瘦赂したFrom */    char save_To[MAX_FIELD];         /* 瘦赂したTo */    char save_CallID[MAX_FIELD];     /* 瘦赂したCall-ID */    char save_Cseq[MAX_FIELD];       /* 瘦赂したCSeq */}SAVE_MSG;/* スタック攫鼠 */typedef struct{    enum registerflag   server_flag; /* サ〖バ蝗脱冉年 */    enum callflag   session_flag;    /* 券缅冉年脱フラグ */    enum callstate  state;           /* SIPスタックの觉轮 */    char username[MAX_NAME];         /* 极眉琐ユ〖ザ〖叹 */    char fqdn[MAX_NAME];             /* 极眉琐FQDN */    char addr[ADDR_SIZE];            /* 极眉琐IPアドレス */    char serv_addr[ADDR_SIZE];       /* SIPサ〖バのIPアドレス */    char serv_fqdn[MAX_NAME];        /* SIPサ〖バのFQDN */    struct in_addr  partner;         /* SIPの陵缄眉琐IPアドレス */    char rtp_addr[ADDR_SIZE];        /* RTPの陵缄眉琐IPアドレス */    int seq;                         /* シ〖ケンス戎规 */    int rtpport;                     /* 不兰奶慨に蝗脱するポ〖ト戎规 */    char y_rtpport[10];              /* 陵缄眉琐の不兰奶慨に蝗脱するポ〖ト戎规 */}STACK_INFO;typedef struct{    int sock;    SAVE_MSG* pmsg;    STACK_INFO* pinfo;    enum send_flag* psend_switch;}RECV_INFO;#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -