如何建立一個利用UDP實現訊息收發功能的MFC程式
阿新 • • 發佈:2019-01-31
第一步是獲取本地IP和埠號,先定義一個CString型別的字串變數strTemp,用途是作為儲存輸入資訊的中間變數。GetWindowText函式的作用是獲取控制元件中的輸入資訊,用這個函式本地埠號繫結的控制元件變數就可以獲得輸入的埠號資訊了。我們獲得的該埠號是字串型別的,而我們需要的是整型的,因此還需要atoi()函式進行轉換,該函式名的全稱就是ascii to int,顧名思義,該函式的作用就是實現字串向整型的轉換。首先獲取埠號是因為建立UDP通訊的第一步是初始化套接字,而該函式的入口引數void CfykudpDlg::OnBnClickedBind() { //setp1 獲取本地IP prot CString strTmp; int localPort; m_LocalPort.GetWindowText(strTmp); localPort = atoi(strTmp); //繫結與解綁 if (FALSE == m_isBindUDP) {//進入函式,沒有繫結 //繫結udp g_UDP.InitSocket(localPort); //更新ui和資料 strTmp.Format("%s",g_UDP.m_HostIP); m_LocalIP.SetWindowText(strTmp); m_isBindUDP = TRUE; m_btn_Bind.SetWindowText("已繫結"); m_LocalPort.EnableWindow(FALSE); //臨時設定remote IP Port m_RemoteIP.SetWindowText(strTmp); m_RemotePort.SetWindowText("8002"); //開 接收執行緒 g_isRunThread = TRUE;//用於while中 g_thread = AfxBeginThread( UDP_Rece_ThreadProc,(LPVOID)this, THREAD_PRIORITY_NORMAL,0,0,NULL); } else { //解除udp繫結 g_UDP.DeletSocket(); //更新ui和資料 m_LocalIP.SetWindowText("-.-.-.-"); m_isBindUDP = FALSE; m_btn_Bind.SetWindowText("繫結"); m_LocalPort.EnableWindow(TRUE); //關閉執行緒 g_isRunThread = FALSE; } }