2013-03-15 60 views
0

我想在MFC中創建 客戶端服務器程序,我發現本網站的一些很好的源代碼:http://www.softwareandfinance.com/Visual_CPP/TCP_Client_Server.html如何在列表框中顯示信息而不是編輯框?

確定有人可以幫助我顯示一個列表框,而不是編輯框中的信息?

這裏來處理客戶端的代碼:

static void f(void *p) 
{ 
    CSocketTestServerDlg *pDlg = reinterpret_cast<CSocketTestServerDlg*>(p); 
    pDlg->ProcessClientRequest(); 
} 

void CSocketTestServerDlg::ProcessClientRequest() 
{ 
    SOCKADDR_IN clientaddr; 
    struct hostent *hostentry; 
    int len = sizeof(clientaddr); 
    SOCKET clientsocket = accept(m_serversocket, (sockaddr*)&clientaddr, &len); 

    if(len == -1) 
    { 
     AfxMessageBox("Error accpeting the client socket"); 
    } 
    else 
    { 
     char *p = inet_ntoa(clientaddr.sin_addr); 
     int portno = ntohs(clientaddr.sin_port); 
     // int inet_pton(int af, const char *restrict src, void *restrict dst); 

     char rbuf[1024]; 
     recv(clientsocket, rbuf, 1024, 0); 
     for(int i = 1024; i >= 1; i--) 
     { 
      if(rbuf[i] == '\n' && rbuf[i - 1] == '\r') 
      { 
       rbuf[i-1] = '\0'; 
       break; 
      } 
     } 


     CString strRecvData; 

     strRecvData.Format("%s\r\n%s %d\r\n%s\r\n\r\n", (const char*)CTime::GetCurrentTime().Format("%B %d, %Y %H:%M:%S"), p, portno, rbuf); 
     m_recvData += strRecvData; 
     m_bRefershData = true; 
     strcat(rbuf, "\r\n"); 
     send(clientsocket, rbuf, 1024, 0); 
     closesocket(clientsocket); 
    } 
} 

憑什麼我剛剛從客戶端獲取IP地址在列表框中顯示?我不需要所有其他信息

+0

問題是什麼?如何在ListBox上顯示信息或如何獲取IP地址? – MikMik 2013-03-15 11:03:16

+0

我只是想要在列表框中顯示的IP地址。我不想要所有其他信息 – Karen123456 2013-03-15 11:12:21

+0

是不是'clientaddr.sin_addr'中的IP地址?我沒有使用套接字,但這是我從[這裏](http://msdn.microsoft.com/es-es/library/zx63b042(v = vs.80).aspx) – MikMik 2013-03-15 11:22:32

回答

0

那麼,你已經有了IP作爲p中的字符串,不是嗎?

你可以從它創建一個CString來避免UNICODE問題。然後用CListBox :: AddString輸出你的字符串:

char *p = inet_ntoa(clientaddr.sin_addr); 

CString str(p); 

//CListBox listbox; 

listbox.AddString(str); 
+0

沒有不行。列表框爲空 – Karen123456 2013-03-15 11:42:50

+0

然後,也許你必須展示更多的代碼。我的意思是,如果istr'持有IP地址字符串(它是,不是嗎?),但是在AddString沒有顯示之後,某些地方必定有錯誤,如在對話框的「連線」中。 – MikMik 2013-03-15 11:58:47

+0

好的,我編輯了我第一次發佈的代碼。那是原始代碼。我沒有改變任何東西 – Karen123456 2013-03-15 12:05:22

相關問題