如何在列表框而不是编辑框中显示信息?

Posted

技术标签:

【中文标题】如何在列表框而不是编辑框中显示信息?【英文标题】:how to display info in a listbox instead of edit box? 【发布时间】:2013-03-15 09:42:15 【问题描述】:

我想在 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 地址以显示在列表框中?我不需要所有其他信息

【问题讨论】:

有什么问题?如何在 ListBox 上显示信息或如何仅获取 IP 地址? 我只想在列表框中显示 IP 地址。我不想要所有其他信息 IP地址不是clientaddr.sin_addr吗?我对套接字的工作不多,但这就是我从here 收集到的 代码已经获取到ip地址了。我真的很想知道如何在列表框中而不是在编辑框中显示内容。此行显示所有内容: 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, 端口号, rbuf); 【参考方案1】:

好吧,您已经在p 中将 IP 作为字符串,不是吗?

您可以从中创建一个 CString 以避免 UNICODE 问题。然后使用 CListBox::AddString 输出你的字符串:

char *p = inet_ntoa(clientaddr.sin_addr);

CString str(p);

//CListBox listbox;

listbox.AddString(str);

【讨论】:

那么也许你需要展示更多的代码。我的意思是,如果“str”保存了 IP 地址字符串(它是,不是吗?),但在 AddString 之后没有显示任何内容,那么其他地方肯定有问题,例如对话框的“接线”。 好的,我编辑了我第一次发布的代码。那是原始代码。我没有改变任何东西 该代码中没有 lisbox。你是如何创建列表框的?或者你甚至创造了它?您正在询问将文本放入列表框中并显示适用于 editctrl 的代码。 我刚才说的是原始代码。但是是的,我已经创建了列表框。我正在使用 mfc 对话框程序,所以我插入了列表框 好吧,我不知道你在做什么,但我已经下载了你链接到的源代码,我在对话框中的编辑控件旁边创建了一个列表框,我创建了一个列表框的控制变量,然后,在 m_recvData += strRecvData 下方,我添加了 c_MyListBox.AddString(CString(p));它工作正常。

以上是关于如何在列表框而不是编辑框中显示信息?的主要内容,如果未能解决你的问题,请参考以下文章

mfc如何将一个编辑框中的数字追加到另一个编辑框,不是覆盖,而是接在原来的后面显示?

如何修改多个数据框而不列出它们然后使用 lapply?

Django-admin:如何在记录更改列表中显示指向对象信息页面的链接而不是编辑表单?

rowList 的文本框而不是 jqGrid 寻呼机中的选择

Winforms,我可以在这里使用文本框而不是组合框吗? (超过 15k 选项的下拉列表)

如何从由 SQL 查询填充的列表框中获取信息?