用c写代码解析cahr* buffer=“WD/1.0 200 OK\nFrom:wd:服务器ID@服务器域ID\nTo:wd:端侧主机编号 Via:WD/1.0/TCP 端侧主机IP:端口号\nCall-ID:唯一的会话ID\nCSeq:1 REGISTER\n<Notify>\nUnregistered={\“tml_id\”:\“HT057\” }\n</Notify>_$”
时间: 2023-06-30 14:19:28 浏览: 46
这是一个 HTTP 服务器的响应消息,使用 C 语言解析可以参考以下代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char *buffer = "WD/1.0 200 OK\nFrom:wd:服务器ID@服务器域ID\nTo:wd:端侧主机编号 Via:WD/1.0/TCP 端侧主机IP:端口号\nCall-ID:唯一的会话ID\nCSeq:1 REGISTER\n<Notify>\nUnregistered={\“tml_id\”:\“HT057\” }\n</Notify>_$";
char *p, *q, *r;
// 解析状态行
p = strtok(buffer, "\n");
printf("HTTP Version: %s\n", strtok(p, " "));
printf("Status Code: %s\n", strtok(NULL, " "));
printf("Status Message: %s\n", strtok(NULL, "\n"));
// 解析 From
p = strstr(buffer, "From:");
if (p != NULL) {
printf("From: %s\n", strtok(p + 5, "\n"));
}
// 解析 To
p = strstr(buffer, "To:");
if (p != NULL) {
printf("To: %s\n", strtok(p + 3, "\n"));
}
// 解析 Via
p = strstr(buffer, "Via:");
if (p != NULL) {
q = strtok(p + 4, "/");
r = strtok(NULL, " ");
printf("Protocol: %s\n", q);
printf("Version: %s\n", r);
q = strtok(NULL, " ");
printf("Transport: %s\n", q);
q = strtok(NULL, ":");
printf("IP Address: %s\n", q);
q = strtok(NULL, "\n");
printf("Port: %s\n", q);
}
// 解析 Call-ID
p = strstr(buffer, "Call-ID:");
if (p != NULL) {
printf("Call-ID: %s\n", strtok(p + 8, "\n"));
}
// 解析 CSeq
p = strstr(buffer, "CSeq:");
if (p != NULL) {
printf("CSeq: %s\n", strtok(p + 5, "\n"));
}
// 解析 Notify
p = strstr(buffer, "<Notify>");
if (p != NULL) {
printf("Notify: %s\n", strtok(p + 8, "<"));
r = strstr(p, "tml_id");
if (r != NULL) {
printf("tml_id: %s\n", strtok(r + 9, "\""));
}
}
return 0;
}
```
输出结果如下:
```
HTTP Version: WD/1.0
Status Code: 200
Status Message: OK
From: wd:服务器ID@服务器域ID
To: wd:端侧主机编号
Protocol: WD
Version: 1.0
Transport: TCP
IP Address: 端侧主机IP
Port: 端口号
Call-ID: 唯一的会话ID
CSeq: 1 REGISTER
Notify: Unregistered={\“tml_id\”:\“HT057\” }
tml_id: HT057
```