sscanf() 函数读入msn协议包 中需要的信息

来源:互联网 发布:ubuntu有什么好玩的 编辑:程序博客网 时间:2024/05/21 09:25

msn聊天信息的包格式:

SDG 10 303\r\n

Routing: 1.0\r\n

To: 1:totest@hotmail.com\r\n

From: 1:fromtest@hotmail.com;epid={4b84929f-aa3b-4967-a00c-6d4675ee342b}\r\n

\r\n

Messaging: 2.0\r\n

Message-Type: Text\r\n

Content-Length; 4\r\n

Content-Type: text/plain; charset=UTF-8\r\n

X-MMS-IM-Format; FN=Microsoft%20Yahei; EF=; CO=; CS=1; PF=0\r\n

\r\n

Hello,world!//本例不分析内容;内容可以根据实例推导(*^__^*) ;

应用sscanf() 函数 获取需要的信息:


char *msn_data="SDG ……"//以上包内信息

char *senderEmail[128];       //发消息人的msn账号

char *receiveEmail[128];       //收消息人的msn账号

char a[128];                              //没有实际用途,用于存储其余部分的字符串;



sscanf(msn_data, "%100[^T]To: 1:%s\r\nFrom: 1:%100[^;]",a,receiveEmail,senderEmail);


分析:

%100[^T],//读取最多100个字符,遇到字符'T'结束,存储于 a 中;


To: 1:%s\r\n,//读取“To: 1:”后面的totest@hotmail.com存储于%s,即receiveEmail;遇到"\r\n",结束;


From: 1:%100[^;],//读取“From: 1:”后面的fromtest@hotmail.com,存储于%100[^;]中,即senderEmail,遇到';'结束。







原创粉丝点击