设为首页 加入收藏

TOP

3.4.2 具体实现(7)
2013-10-07 15:56:21 来源: 作者: 【 】 浏览:80
Tags:3.4.2 具体 实现

3.4.2  具体实现(7)

定义函数RespondToOptions(),用于设置选项协议状态,具体代码如下:

  1. void CTelnetView::RespondToOptions()  
  2. {  
  3. CString strOption;  
  4. while(!m_ListOptions.IsEmpty())  
  5. {  
  6. strOption = m_ListOptions.RemoveHead();  
  7. ArrangeReply(strOption);  
  8. }  
  9. DispatchMessage(m_strResp);  
  10. m_strResp.Empty();  
  11. }  

定义函数ArrangeReply(),用于设置回应选项状态,具体代码如下:
  1. void CTelnetView::ArrangeReply(CString strOption)  
  2. {  
  3. unsigned char Verb;  
  4. unsigned char Option;  
  5. unsigned char Modifier;  
  6. unsigned char ch;  
  7. BOOL bDefined = FALSE;  
  8.  
  9. if(strOption.GetLength() < 3) return;  
  10.  
  11. Verb = strOption.GetAt(1);  
  12. Option = strOption.GetAt(2);  
  13.  
  14. switch(Option)  
  15. {  
  16. case 1: //回显  
  17. case 3: // Suppress Go-Ahead  
  18. bDefined = TRUE;  
  19. break;  
  20. }  
  21.  
  22. m_strResp += IAC;  
  23.  
  24. if(bDefined == TRUE)  
  25. {  
  26. switch(Verb)  
  27. {  
  28. case DO:  
  29. ch = WILL;  
  30. m_strResp += ch;  
  31. m_strResp += Option;  
  32. break;  
  33. case DONT:  
  34. ch = WONT;  
  35. m_strResp += ch;  
  36. m_strResp += Option;  
  37. break;  
  38. case WILL:  
  39. ch = DO;  
  40. m_strResp += ch;  
  41. m_strResp += Option;  
  42. break;  
  43. case WONT:  
  44. ch = DONT;  
  45. m_strResp += ch;  
  46. m_strResp += Option;  
  47. break;  
  48. case SB:  
  49. Modifier = strOption.GetAt(3);  
  50. if(Modifier == SEND)  
  51. {  
  52. ch = SB;  
  53. m_strResp += ch;  
  54. m_strResp += Option;  
  55. m_strResp += IS;  
  56. m_strResp += IAC;  
  57. m_strResp += SE;  
  58. }  
  59. break;  
  60. }  
  61. }  
  62. else  
  63. {  
  64. switch(Verb)  
  65. {  
  66. case DO:  
  67. ch = WONT;  
  68. m_strResp += ch;  
  69. m_strResp += Option;  
  70. break;  
  71. case DONT:  
  72. ch = WONT;  
  73. m_strResp += ch;  
  74. m_strResp += Option;  
  75. break;  
  76. case WILL:  
  77. ch = DONT;  
  78. m_strResp += ch;  
  79. m_strResp += Option;  
  80. break;  
  81. case WONT:  
  82. ch = DONT;  
  83. m_strResp += ch;  
  84. m_strResp += Option;  
  85. break;  
  86. }  
  87. }  
  88. }  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.4.2 具体实现(6) 下一篇3.4.2 具体实现(8)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·工业机器人TCP校准中 (2025-12-25 05:19:17)
·opc 通讯协议与 TCP (2025-12-25 05:19:15)
·labview中tcp/ip通信 (2025-12-25 05:19:13)
·新书介绍《Python数 (2025-12-25 04:49:47)
·怎么利用 Python 进 (2025-12-25 04:49:45)