设为首页 加入收藏

TOP

1.4.2 具体编码(3)
2013-10-07 15:52:37 来源: 作者: 【 】 浏览:89
Tags:1.4.2 具体 编码

1.4.2  具体编码(3)

(8) 定义"查看"按钮的消息处理函数,具体代码如下:

  1. void CIpmonDlg::OnLookUp()   
  2. {  
  3. char szErr[50], szHostName[MAX_PATH];  
  4. DWORD  dwErr;  
  5. SOCKADDR_IN sa;  
  6. gethostname(szHostName, sizeof(szHostName));  
  7. m_iphostsource = m_ipsource;  
  8. m_ipcheckedhost = ntohl(m_iphost);  
  9. if(0 == m_threadID)  
  10. {  
  11. SetDlgItemText(IDC_LOOKUP, "停止查看!");  
  12. }  
  13. else  
  14. {  
  15. if(m_threadID)  
  16. {  
  17. PostThreadMessage(m_threadID, WM_CLOSE, 0, 0);  
  18. SetDlgItemText(IDC_LOOKUP, "开始查看!");  
  19. m_start.EnableWindow(FALSE);  
  20. }  
  21. return;  
  22. }  
  23. DWORD dwBufferLen[10];  
  24. DWORD dwBufferInLen = 1;  
  25. DWORD dwBytesReturned = 0;  
  26. m_s = socket(AF_INET, SOCK_RAW, IPPROTO_IP);  
  27. if(INVALID_SOCKET == m_s)  
  28. {  
  29. dwErr = WSAGetLastError();  
  30. sprintf(szErr, " Error socket() = %ld ", dwErr);  
  31. AfxMessageBox(szErr);  
  32. closesocket(m_s);  
  33. return;  
  34. }  
  35. int rcvtimeo = 5000;   
  36. if(setsockopt(m_s, SOL_SOCKET, SO_RCVTIMEO, (const char *)&rcvtimeo,   
  37. sizeof(rcvtimeo)) == SOCKET_ERROR)  
  38. {  
  39. dwErr = WSAGetLastError();  
  40. sprintf(szErr, "Error WSAIoctl = %ld ", dwErr);  
  41. AfxMessageBox(szErr);  
  42. closesocket(m_s);  
  43. return;  
  44. }  
  45. sa.sin_family = AF_INET;  
  46. sa.sin_port = htons(7000);  
  47. sa.sin_addr.s_addr = m_iphostsource;  
  48. if (bind(m_s, (PSOCKADDR)&sa, sizeof(sa)) == SOCKET_ERROR)  
  49. {  
  50. dwErr = WSAGetLastError();  
  51. sprintf(szErr, "Error bind() = %ld ", dwErr);  
  52. AfxMessageBox(szErr);  
  53. closesocket(m_s);  
  54. return;  
  55. }   
  56. if(SOCKET_ERROR != WSAIoctl(m_s, SIO_RCVALL, &dwBufferInLen,   
  57. sizeof(dwBufferInLen),               
  58. &dwBufferLen,   
  59. sizeof(dwBufferLen),  
  60. &dwBytesReturned, NULL, NULL))  
  61. AfxBeginThread(threadFunc, (LPVOID)this);  
  62. else  
  63. {  
  64. dwErr = WSAGetLastError();  
  65. sprintf(szErr, "Error WSAIoctl = %ld ", dwErr);  
  66. AfxMessageBox(szErr);  
  67. closesocket(m_s);  
  68. return;  
  69. }  
  70. }  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.4.2 具体编码(2) 下一篇1.4.2 具体编码(4)

评论

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

·常用meta整理 | 菜鸟 (2025-12-25 01:21:52)
·SQL HAVING 子句:深 (2025-12-25 01:21:47)
·SQL CREATE INDEX 语 (2025-12-25 01:21:45)
·Shell 传递参数 (2025-12-25 00:50:45)
·Linux echo 命令 - (2025-12-25 00:50:43)