2013-03-15 1 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

+0

나는 IP 주소를 목록 상자에 표시하기 만하면됩니다. 나는 다른 모든 정보를 원하지 않는다. – Karen123456

+0

'clientaddr.sin_addr'에 IP 주소가 없습니까? 소켓으로 많은 작업을하지는 못했지만, 그게 내가 [여기]에서 수집 한 것입니다. (http://msdn.microsoft.com/es-es/library/zx63b042 (v = vs.80) .aspx) – MikMik

답변

0

글쎄, IP 주소는 p입니다. 그렇습니까?

UNICODE 문제를 피하기 위해 CString을 만들 수 있습니다. 그런 다음 CListBox :: AddString을 사용하여 문자열을 출력하십시오.

char *p = inet_ntoa(clientaddr.sin_addr); 

CString str(p); 

//CListBox listbox; 

listbox.AddString(str); 
+0

그게 작동하지 않습니다. 목록 상자가 비어 있습니다 – Karen123456

+0

다음 코드를 좀 더 보여줘야합니다. 즉, 'str '이 IP 주소 문자열을 보유하고 있다면 (즉, 그렇지 않습니까?) AddString 후에 아무 것도 표시되지 않습니다. 대화 상자의 "배선"처럼 다른 곳에서 뭔가 잘못되었을 것입니다. – MikMik

+0

오케이 내가 처음 게시 한 코드를 편집했습니다. 그것이 원래 코드입니다. 나는 아무것도 바꾸지 않았다 – Karen123456

관련 문제