我有一个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;
}
}
虽然这种方法确实有效,但我觉得它不安全和少年。有谁知道更好的方法来执行相同的功能?