Decode.java
上传用户:pdtewte
上传日期:2021-10-16
资源大小:13k
文件大小:7k
源码类别:

IP电话/视频会议

开发平台:

Java

  1. import java.net.*;
  2. import java.io.*;
  3. import java.util.*;
  4. class Decode
  5. {
  6. public String sPacketType;
  7. public String sURL;
  8. public String sVia;
  9. public String sBranch;
  10. public String sCallID;
  11. public String sFROM;
  12. public String sTag;
  13. public String sTO;
  14. public String sCSeq;
  15. public String sContact;
  16. public String sContactUsername;
  17. public String sContactIP;
  18. public String sContactPort;
  19. public String sURLIP;
  20. public String sURLPort;
  21. public String sURLUsername;
  22. public String sUserAgent;
  23. public String sExpires;
  24. public String sMediaIP;
  25. public String sMediaPort;
  26. public Decode(String packet)
  27. {
  28. this.sURL = GetURL(packet);
  29. this.sVia = GetVIA(packet);
  30. this.sPacketType = GetPacketType(packet);
  31. this.sBranch = GetBranch(packet);
  32. this.sCallID = GetCallID(packet);
  33. this.sContact = GetContact(packet);
  34. this.sFROM = GetFrom(packet);
  35. this.sTO = GetTo(packet);
  36. this.sCSeq = GetCSeq(packet);
  37. this.sExpires = GetExpires(packet);
  38. this.sMediaIP =  GetMedia(packet);
  39. }
  40. public  String GetMedia(String message)
  41. {
  42. this.sMediaIP = "";
  43. this.sMediaPort = "";
  44. int indexBeginOfurl = message.indexOf("m=audio");
  45. if ( -1 == indexBeginOfurl )
  46. {
  47. return "";
  48. }
  49. int indexEndOfurl = message.indexOf("rn",indexBeginOfurl);
  50. String Media = message.substring(indexBeginOfurl, indexEndOfurl);
  51. Media = Media.substring("m=audio ".length());
  52. StringTokenizer token = new StringTokenizer(Media, " ");
  53. this.sMediaPort = token.nextToken();
  54. indexBeginOfurl = message.indexOf("c=IN IP4 ");
  55. indexEndOfurl = message.indexOf("rn",indexBeginOfurl);
  56. if ( -1 == indexBeginOfurl  || indexEndOfurl == -1 )
  57. {
  58. return "";
  59. }
  60. Media = message.substring(indexBeginOfurl, indexEndOfurl);
  61. Media = Media.substring("c=IN IP4 ".length());
  62. token = new StringTokenizer(Media, " ");
  63. this.sMediaIP = token.nextToken();
  64. return this.sMediaIP;
  65. }
  66.  
  67. public String GetPacketType(String message)
  68. {
  69. StringTokenizer s = new StringTokenizer(message);
  70. if (  -1 == message.indexOf(" ") )
  71. {
  72. return "";
  73. }
  74. return s.nextToken();
  75. }
  76. public String GetBranch(String message)
  77. {
  78. int indexBeginOfbranch = message.indexOf("branch");
  79. int indexEndOfbranch = message.indexOf("rn", indexBeginOfbranch);
  80. if ( -1 == indexBeginOfbranch || -1 == indexEndOfbranch )
  81. {
  82. return "";
  83. }
  84. String branch = message.substring(indexBeginOfbranch, indexEndOfbranch);
  85. branch = branch.substring("branch=".length());
  86. return branch;
  87. }
  88. public  String GetURL(String message)
  89. {
  90. int indexBeginOfurl = message.indexOf("sip");
  91. int indexEndOfurl = message.indexOf("SIP");
  92. if ( -1 == indexBeginOfurl || -1 == indexEndOfurl )
  93. {
  94. return "";
  95. }
  96. String url = message.substring(indexBeginOfurl, indexEndOfurl);
  97. url = url.substring("sip:".length());
  98. StringTokenizer token = new StringTokenizer(url, "<> :@");
  99. this.sURLUsername = token.nextToken();
  100. this.sURLIP = token.nextToken();
  101. if (token.hasMoreTokens())
  102. {
  103. this.sURLPort = token.nextToken();
  104. }
  105. else
  106. {
  107. this.sURLPort = "5060";
  108. }
  109. return url;
  110. }
  111. public  String GetVIA(String message)
  112. {
  113. int indexBeginOfVia = message.indexOf("Via");
  114. int indexEndOfVia = message.indexOf(";");
  115. if ( -1 == indexBeginOfVia || -1 == indexEndOfVia )
  116. {
  117. return "";
  118. }
  119. String via = message.substring(indexBeginOfVia, indexEndOfVia);
  120. via = via.substring("Via: SIP/2.0/UDP ".length());
  121. return via;
  122. }
  123. public String GetExpires(String message)
  124. {
  125. int indexBeginOfExpires = message.indexOf("Expires: ");
  126. if (indexBeginOfExpires == -1)
  127. {
  128. //System.out.println("Expires: ");
  129. return " ";
  130. }
  131. int indexEndOfExpires = message.indexOf("rn", indexBeginOfExpires);
  132. String Expires = message.substring(indexBeginOfExpires, indexEndOfExpires);
  133. Expires = Expires.substring("Expires: ".length());
  134. //System.out.println("Expires: " + Expires);
  135. return Expires;
  136. }
  137. public String GetCallID(String message)
  138. {
  139. int indexBeginOfCallID = message.indexOf("Call-ID:");
  140. int indexEndOfCallID = message.indexOf("rn", indexBeginOfCallID);
  141. if ( -1 == indexBeginOfCallID || -1 == indexEndOfCallID )
  142. {
  143. return "";
  144. }
  145. String CallID = message.substring(indexBeginOfCallID, indexEndOfCallID);
  146. CallID = CallID.substring("Call-ID: ".length());
  147. CallID.trim();
  148. return CallID;
  149. }
  150. public String GetContact(String message)
  151. {
  152. int indexBeginOfContact = message.indexOf("Contact:");
  153. if (indexBeginOfContact == -1)
  154. {
  155. return "";
  156. }
  157. int indexEndOfContact = message.indexOf("rn", indexBeginOfContact);
  158. String Contact = "";
  159. Contact = message.substring(indexBeginOfContact, indexEndOfContact);
  160. Contact = Contact.substring("Contact: ".length());
  161. Contact.trim();
  162. String tmp = Contact;
  163. int indexOfUser = tmp.indexOf("sip:");
  164. int indexOfAt = tmp.indexOf("@");
  165. this.sContactUsername = tmp.substring(indexOfUser + "sip:".length(), indexOfAt);
  166. int indexOfLastColon = tmp.lastIndexOf(":");
  167. int indexOfFirstColon = tmp.indexOf(":");
  168. if (indexOfLastColon == indexOfFirstColon)
  169. {
  170. this.sContactIP = tmp.substring(indexOfAt + 1, tmp.indexOf(">"));
  171. this.sContactPort = "5060";
  172. }
  173. else
  174. {
  175. this.sContactIP = tmp.substring(indexOfAt + 1, indexOfLastColon );
  176. this.sContactPort = tmp.substring(indexOfLastColon + 1, tmp.indexOf(">") );
  177. }
  178. return Contact;
  179. }
  180. public String GetFrom(String message)
  181. {
  182. int indexBeginOfFrom = message.indexOf("From:");
  183. int indexEndOfFrom = message.indexOf("rn", indexBeginOfFrom);
  184.         if ( -1 == indexBeginOfFrom || -1 == indexEndOfFrom )
  185.         {
  186.          return "";
  187.         }
  188. String From = message.substring(indexBeginOfFrom, indexEndOfFrom);
  189. From = From.substring("From: ".length());
  190. From.trim();
  191. return From;
  192. }
  193. public String GetTo(String message)
  194. {
  195. int indexBeginOfTo = message.indexOf("To:");
  196. int indexEndOfTo = message.indexOf("rn", indexBeginOfTo);
  197. if ( -1 == indexBeginOfTo || -1 == indexEndOfTo )
  198.         {
  199.          return "";
  200.         }
  201. String To = message.substring(indexBeginOfTo, indexEndOfTo);
  202. To = To.substring("To: ".length());
  203. To.trim();
  204. return To;
  205. }
  206. public String GetCSeq(String message)
  207. {
  208. int indexBeginOfCSeq = message.indexOf("CSeq:");
  209. int indexEndOfCSeq = message.indexOf("rn", indexBeginOfCSeq);
  210. if ( -1 == indexBeginOfCSeq || -1 == indexEndOfCSeq )
  211.         {
  212.          return "";
  213.         }
  214. String CSeq = message.substring(indexBeginOfCSeq, indexEndOfCSeq);
  215. CSeq = CSeq.substring("CSeq: ".length());
  216. CSeq.trim();
  217. return CSeq;
  218. }
  219. }