首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将消息从客户端发送到服务器-MFC-app?

如何将消息从客户端发送到服务器-MFC-app?
EN

Stack Overflow用户
提问于 2014-03-22 16:10:38
回答 1查看 825关注 0票数 0

我的任务是创建一个客户端网络通信服务器-mfc-应用程序。这意味着我不允许更改服务器-mfc应用程序代码,但必须使web可以与该服务器-mfc应用程序对话。该服务器-mfc-应用程序使用套接字,可以与客户端-mfc-应用程序通信。

我创建了一个客户端-web可以连接到服务器-mfc-app成功(server-mfc-app接受连接),但是当客户端web向服务器发送消息时-mfc-app: server-mfc-app知道客户端-web发送消息,但是它可以通过::ReceiveData(SOCKET hSocket)获得消息(我运行调试模式服务器-mfc-app来监视所有功能)。

服务器-MFC-应用程序代码:

代码语言:javascript
复制
    ON_MESSAGE(MSG_ASYNC, OnAsyncSelect)
    LRESULT CChatServerDlg::OnAsyncSelect(WPARAM wParam, LPARAM lParam)
    {
        if (WSAGETSELECTERROR(lParam) != 0)
        {
        }
        else
        {
            switch(WSAGETSELECTEVENT(lParam))
            {
                case FD_READ:
                    ReceiveData(wParam);
                    break;
                case FD_ACCEPT:
                    {
                        CUserSocket *pClient = AcceptConnection();
                        if(pClient)
                        {
                            CString sReport;
                            sReport.Format(_T("Có kết nối từ IP: %s , Port: %d"),
                            pClient->GetRemoteIpAddr(),pClient->GetRemotePort());
                            m_lbStatus.AddString(sReport);
                            SendData(pClient->GetSocket(),_T("Server sẵn sàng"));
                            m_groupNewUsers.AddUser(pClient);
                        }
                    }
                    break;
                case FD_CLOSE:
                    CUserGroup *gr = m_groupList.FindGroup(wParam);
                    if (gr!=NULL)
                        gr->RemoveUser(wParam);
                    closesocket(wParam);
                    OnLbnSelchangeGrouplist();
                    m_lbStatus.AddString(_T("Đã đóng kết nối"));
                    break;
            }
        }
        return 0L;
    }
    void CChatServerDlg::ReceiveData(SOCKET hSocket)
    {
        char szBuf[MAX_LEN];
        int nByteRe = recv(hSocket, szBuf, MAX_LEN, 0);//always successful 
        // with client-mfc-app, and always unsuccessful with client-web below.
        if (nByteRe<=0) 
            return;
        wchar_t wch[MAX_LEN];
        CString s = _T("");
        MultiByteToWideChar(CP_UTF8,0,szBuf,nByteRe,wch,nByteRe/2);
        wch[nByteRe/2] = '\0';
        s += wch;
        SolveRequest(hSocket,s);
    }

客户端-网页代码:

代码语言:javascript
复制
<?php
        error_reporting(E_ALL);
        $port = 2012;
        $address = "127.0.0.1";
        $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
        if ($socket === false) {
            echo "socket_create() failed: reason: "
            .socket_strerror(socket_last_error())."<br/>";
        }
        $result = socket_connect($socket, $address, $port);
        if ($result === false) {
                echo "socket_connect() failed.\nReason: ($result) "
            .socket_strerror(socket_last_error($socket)) ."<br/>";
        }else{
            echo "Connecting successful."."<br/>";
        }
        $msg = "ULIST";
            $len = strlen($msg);
        $flag=0;
        socket_sendto($socket, $msg, $len, $flag, $address, $port);
        //socket_close($socket);
?>
EN

Stack Overflow用户

回答已采纳

发布于 2014-03-23 06:18:50

请尝试用socket_write($socket, $msg, $len );代替socket_sendto来连接套接字。

票数 -1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22580079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档