将数据从服务器传输到其他对象

时间:2016-07-12 18:10:11

标签: c++ server winsock

我有一个Winsock Server类正在运行并正在侦听客户端。客户端发送Server对象数据。然后Server需要将该数据发送到程序中的Handler对象。我之前没有任何类型的套接字编程经验,所以我能够实现这一目的的唯一方法是为Server类提供Handler中数据成员的引用,并在接收时更新引用数据。这样,只要客户端发送数据,Handler就会更新。这里有一些简单的代码来展示我目前正在做的事情:

while (connected)
{
    char recvbuf[258];
    int recvbuflen = sizeof(recvbuf);

    iResult = recv(ClientSocket, recvbuf, recvbuflen, 0);

    if (iResult > 0)
    {
        switch (recvbuf[0])
        {
            case 'h':
            {
                triggerEventReference = recvbuf[0];
                std::string str = std::string(recvbuf);
                str.erase(str.begin());
                str.resize(iResult - 1);
                strReference = str;
                break;
            }
            case 's':
                triggerEventReference = recvbuf[0];
                boundReference = recvbuf[1];
                otherReference = recvbuf[2];
                break;
            case 't':
                triggerEventReference = recvbuf[0];
                connected = 0;
                break;
            default:
                break;
        }
    }
    else
    {
        break;
    }
}

虽然这种方法确实有效,但我觉得它不安全和少年。有谁知道更好的方法来执行相同的功能?

0 个答案:

没有答案