本文介绍了C ++ winsock多客户端的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何在我的代码中添加对许多客户端的支持。另外,如何以一种清晰且实际有意义的方式完成这项工作。
How would it be possible to add support for many clients into my code. Also how can this be done in a way that is clear and actually make sense.
class classServer
{
private:
char *buffer;
WSADATA theWSA;
SOCKET theSocket,theOtherSocket;
public:
classServer();
void makeSocketLoad()
{
WSAStartup(MAKEWORD(2,2),&theWSA);
theSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
}
void sockConnect(int port)
{
struct sockaddr_in serverInf;
serverInf.sin_family=AF_INET;
serverInf.sin_addr.s_addr=INADDR_ANY;
serverInf.sin_port=htons(port);
if(bind(theSocket,(SOCKADDR*)&serverInf,sizeof(serverInf)) == SOCKET_ERROR)
{
std::cout<<"Unable to bind socket!\r\n";
WSACleanup();
system("PAUSE");
}
}
void getDataStream()
{
listen(theSocket,1);
SOCKET TempSock=SOCKET_ERROR;
while(TempSock==SOCKET_ERROR)
{
std::cout<<"Waiting for incoming connections...\r\n";
TempSock=accept(theSocket,NULL,NULL);
}
theSocket=TempSock;
std::cout<<"Client connected!\r\n\r\n";
char *buffer = new char[1002];
std::string data;
int inDataSize;
while(true)
{
inDataSize = recv(theSocket,buffer,1000,0);
data = buffer;
if(inDataSize > 0)
{
std::cout << data << std::endl;
if(data == "exit")
{
std::cout << "EXIT NOW" << std::endl;
exit(0);
break;
}
}
}
}
void killWinsock()
{
closesocket(theOtherSocket);
closesocket(theSocket);
WSACleanup();
}
};
classServer::classServer()
{
buffer = new char[1002];
}
我的尝试:
查看大量令人困惑的代码,尝试实现这一点。
What I have tried:
Looking through large amounts of confusing code, to try to implement this.
推荐答案
这篇关于C ++ winsock多客户端的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!