SIP协议错误代码code大全(中英文对照)

1)100 Trying
说明caller正在呼叫,但还没联系上callee。 180 Ringing 说明callee已经被联系上,callee的铃正在响.收到这个信息后,等待200 OK
2)181 Call is being forwarded
说明call被重新路由到另外一个目的地
3)182 Queued
说明callee当前是不可获得的,但是对方不想直接拒绝呼叫,而是选择放在呼叫队列中
4)183 Session progress
用来警告caller频段(inband)错误。当从PSTN收到一个ISDN消息,SIP gateway 产生183 Session progress 。
2xx successful Responses
200 OK
3xx Redirection Responses
5)300 Multiple choices
说明呼叫的地址被解析成多个地址,所有的地址都被提供出来,用户或用户代理可以从中选择联系哪个。
6)301 Moved permanently
说明指定地址的用户已经永远不可用,在头中已经用另外一个地址替换了.
7)302 Moved temporarily
说明指定地址的用户临时不可用,在头中已经用另外一个地址代替了.
8)305 Use proxy
说明caller必须用一个proxy来联系callee.
9)380 Alternative service
说明call不成功,但是可选择其他的服务
4xx Request Failure Responses
10)400 Bad Request
说明由于非法格式,请求不能被理解。
11)401 Unauthorized
说明请求需要用户认证。
12)402 Payment required
说明完成会话需要付费.
13)403 Forbidden
说明server已经收到并能理解请求但不提供服务。
14)404 Not Found
说明server有明确的信息在指定的域中用户不存在.
15)405 Method Not Allowed
说明请求中指定的方法是不被允许的。将返回一个允许的方法列表。
16)406 Not Acceptable
说明被请求的资源只对某些特殊的请求作出响应,对目前头(header)中指定的请求不接受.
17)407 Proxy authentication required
和401 Unauthorized response相似.但是,它说明client必须首先在proxy上认证自己。
18)408 Request timeout
说明在timeout时间过期前,server不能产生响应.
19)409 Conflict
说明由于和当前资源状态产生冲突,请求不能被处理。
20)410 Gone
说明请求资源在server上永远不可用,也没有转发的地址。
21)411 Length required
说明用户拒绝接受没有定义content长度的请求。
22) 413 Request entity too large
说明server拒绝处理请求,因为它太大,超过了server能处理的大小。
23)414 Request-URI too long
说明server拒绝处理请求,因为请求的URI太长,server不能解释它。
24)415 Unsupported media
说明server拒绝处理请求,因为body格式不被目的终端支持
25)420 Bad extension
说明server不能理解在header中指出的扩展协议。
26)480 Temporarily unavailable
说明callee已经被联系上,但是暂时不可用。
27)481 Call leg/transaction does not exist
 说明server正在忽略请求,由于它是一个没有匹配legID的BYE或者是一个没有匹配事务的CANCEL。
28)482 Loop detected
 说明server收到了一个包含它自己路径的请求.
29)483 Too many hops
说明server收到了一个请求,它需要的hop数超过了在header中允许的最大hop数.
30)484 Address incomplete
说明server收到一个地址不完整的请求.
31)485 Ambiguous
说明server收到一个请求,其中callee的地址是不明确的,也没有可能备用的地址供选择。
32)486 Busy here
 说明callee已经被联系上,但是它们的系统不能承受额外的call.
488
(暂时不能进行)。
5xx Server Failure Responses
33)500 Server internal error
 说明server或gateway发生意外错误从而不能处理请求.
34)501 Not implemented
说明server或gateway不支持完成请求所需的功能.
35)502 Bad gateway
说明server或gateway从下游server收到一个非法响应.
36)503 Service unavailable
说明由于超负载或维护问题,server或gateway不能处理请求.
37)504 Gateway timeout
说明server或gateway没有从另外一个server(如location server)收到一个及时的响应.
 
38)505 Version not supported
说明server或gateway不支持在请求中用到的SIP版本。
6xx Global Responses
39)600 Busy everywhere
说明callee已经被联系上,但是处于忙状态中,在这个时间不能接受call。
40)603 Decline
说明callee已经被联系上,但是不能或不想加入call。
41)604 Does not exist anywhere
说明server有正式的信息说明callee不存在于网络中。
42)606 Not acceptable
说明callee已经被联系上,但是session描述的某些方面不被接受。 

  • 6
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: SIP(Session Initiation Protocol)是一种用于建立、修改和终止多媒体会话的信令协议。下面是使用C语言编写的基本SIP协议源代码的示例: ``` #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #define MAX_BUFFER_SIZE 1024 #define SIP_PORT 5060 int main() { int sockfd; struct sockaddr_in server_addr; char buffer[MAX_BUFFER_SIZE]; // 创建UDP套接字 sockfd = socket(AF_INET, SOCK_DGRAM, 0); if (sockfd < 0) { perror("Socket creation failed"); exit(EXIT_FAILURE); } // 初始化服务器地址结构 memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(SIP_PORT); server_addr.sin_addr.s_addr = htonl(INADDR_ANY); // 服务器IP地址 // 将套接字绑定到服务器地址 if (bind(sockfd, (const struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) { perror("Socket binding failed"); exit(EXIT_FAILURE); } printf("SIP Server listening on port %d\n", SIP_PORT); while (1) { struct sockaddr_in client_addr; unsigned int addr_len = sizeof(client_addr); // 接收来自客户端的请求 ssize_t received_bytes = recvfrom(sockfd, (char*)buffer, MAX_BUFFER_SIZE, 0, (struct sockaddr*)&client_addr, &addr_len); if (received_bytes < 0) { perror("Error in receiving request"); exit(EXIT_FAILURE); } printf("Received request from %s:%d\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port)); printf("Request message:\n%s\n", buffer); // 在此处你可以解析SIP请求并进行相应的处理 // 发送响应给客户端 const char* response = "SIP response"; ssize_t sent_bytes = sendto(sockfd, response, strlen(response), 0, (struct sockaddr*)&client_addr, addr_len); if (sent_bytes < 0) { perror("Error in sending response"); exit(EXIT_FAILURE); } printf("Response sent to %s:%d\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port)); } // 关闭套接字 close(sockfd); return 0; } ``` 上述代码使用C语言实现了一个简单的SIP服务器,它监听5060端口的UDP请求。它首先创建一个UDP套接字,然后绑定到服务器地址上。接着通过`recvfrom()`函数接收来自客户端的SIP请求,并将请求内容打印到控制台上。在此处你可以对请求进行解析和处理。最后,通过`sendto()`函数将响应消息发送回客户端,并将响应信息打印到控制台。 请注意,这只是一个简单的示例代码,实际的SIP服务器需要更复杂的逻辑和功能来处理不同类型的请求、呼叫流程管理等等。 ### 回答2: SIP(Session Initiation Protocol)协议是一种用于建立、修改和终止多媒体会话的通信协议。在C语言中,我们可以使用标准的网络编程库来实现SIP协议的源代码。 以下是一个简单的SIP协议的C语言源代码示例: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #define MAX_BUFFER_SIZE 1024 int main() { int socket_fd; struct sockaddr_in server_addr; char buffer[MAX_BUFFER_SIZE]; // 创建TCP socket socket_fd = socket(AF_INET, SOCK_STREAM, 0); if (socket_fd < 0) { perror("Socket creation failed.\n"); exit(EXIT_FAILURE); } // 设置服务器地址 server_addr.sin_family = AF_INET; server_addr.sin_port = htons(5060); // SIP默认端口号 server_addr.sin_addr.s_addr = inet_addr("192.168.0.1"); // 服务器IP地址 // 连接服务器 if (connect(socket_fd, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) { perror("Connection failed.\n"); exit(EXIT_FAILURE); } // 发送SIP请求 snprintf(buffer, MAX_BUFFER_SIZE, "REGISTER sip:192.168.0.1 SIP/2.0\r\n" "Via: SIP/2.0/TCP 192.168.0.2:5060\r\n" "From: Alice <sip:[email protected]>;tag=1234\r\n" "To: Bob <sip:[email protected]>\r\n" "Call-ID: [email protected]\r\n" "CSeq: 1 REGISTER\r\n" "Contact: <sip:[email protected]>\r\n" "Content-Length: 0\r\n\r\n"); if (send(socket_fd, buffer, strlen(buffer), 0) < 0) { perror("Send failed.\n"); exit(EXIT_FAILURE); } // 接收服务器响应 memset(buffer, 0, MAX_BUFFER_SIZE); if (recv(socket_fd, buffer, MAX_BUFFER_SIZE, 0) < 0) { perror("Receive failed.\n"); exit(EXIT_FAILURE); } // 打印服务器响应 printf("Received response:\n%s\n", buffer); // 关闭socket连接 close(socket_fd); return 0; } ``` 上述代码使用C语言中的Socket编程库创建一个TCP socket,并与指定的SIP服务器建立连接。然后,通过send函数发送一个SIP REGISTER请求,并通过recv函数接收服务器的响应。最后,打印服务器的响应,并关闭socket连接。 请注意,上述代码只是一个简单的示例,仅仅发送了一个REGISTER请求,并打印了服务器的响应。实际情况中,SIP协议的实现会更加复杂,需要处理更多的请求和响应消息,并实现SIP协议的各种功能。 ### 回答3: SIP(会话初始协议)是一种用于建立、修改和终止多媒体会话的应用层协议。它是一个基于文本的协议,使用类似HTTP的请求和响应格式。 下面是一个简单的使用C语言实现的SIP协议的代码示例: ```c #include <stdio.h> // 定义SIP请求方法枚举类型 enum SIPRequestMethod { INVITE, // 邀请 ACK, // 应答确认 BYE, // 结束会话 CANCEL, // 取消邀请 REGISTER // 注册 }; // 定义SIP响应状态码枚举类型 enum SIPResponseStatus { OK = 200, // 成功 NOT_FOUND = 404, // 未找到 INTERNAL_SERVER_ERROR // 内部服务器错误 }; // 定义SIP请求结构体 struct SIPRequest { enum SIPRequestMethod method; // 请求方法 char* uri; // 统一资源标识符 }; // 定义SIP响应结构体 struct SIPResponse { enum SIPResponseStatus status; // 响应状态码 char* message; // 响应消息 }; // 处理SIP请求的函数 struct SIPResponse processSIPRequest(struct SIPRequest request) { struct SIPResponse response; // 根据请求方法执行相应的处理逻辑 switch (request.method) { case INVITE: // 处理邀请请求 response.status = OK; response.message = "Invite successful"; break; case ACK: // 处理确认应答 response.status = OK; response.message = "Ack successful"; break; case BYE: // 处理结束会话请求 response.status = OK; response.message = "Bye successful"; break; case CANCEL: // 处理取消邀请请求 response.status = OK; response.message = "Cancel successful"; break; case REGISTER: // 处理注册请求 response.status = OK; response.message = "Register successful"; break; } return response; } int main() { // 创建一个SIP请求并设置请求方法和URI struct SIPRequest request; request.method = INVITE; request.uri = "sip:example.com"; // 处理SIP请求并获取响应 struct SIPResponse response = processSIPRequest(request); // 打印响应状态码和消息 printf("Response status: %d\n", response.status); printf("Response message: %s\n", response.message); return 0; } ``` 这个示例展示了一个简单的SIP协议的C语言源代码,其中包括定义了SIP请求和响应的结构体,以及处理SIP请求的函数。在主函数中,创建了一个SIP请求并设置了请求方法和URI,然后调用处理SIP请求的函数并打印出其返回的响应状态码和消息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值