【发布时间】:2014-11-19 01:14:09
【问题描述】:
我正在尝试创建程序,它托管一个服务器并允许多个客户端加入一个服务器。我能够创建服务器套接字,它只允许一个连接,但我无法适应我的多线程知识。我的每当客户端连接时(创建新线程时),代码都会引发运行时错误。这是我的代码: 整数结果; 诠释recvbuf; int dataReceived;
int save(int key_stroke,char *file);
class ClientHandler{
public:
void operator()(SOCKET s){
try{
do{
result = recv(s,(char*)&recvbuf,4,0);
dataReceived = ntohl(recvbuf);
if(result>0){
save(dataReceived,"log.txt");
}else{
cout << "CONNECTION LOST!" << endl;
}
}while(result > 0);
}catch(...){}
}
};
int main()
{
WSAData wsa;
WORD version = MAKEWORD(2,1);
WSAStartup(version, &wsa);
SOCKET Listener = socket(AF_INET,SOCK_STREAM,NULL);
SOCKET Connect = socket(AF_INET,SOCK_STREAM,NULL);
SOCKADDR_IN Server;
Server.sin_addr.s_addr = INADDR_ANY;
Server.sin_family = AF_INET;
Server.sin_port = htons(5125);
int sizeOf = sizeof(Server);
bind(Listener, (SOCKADDR*)&Server , sizeOf);
listen(Listener,100);
cout << "Listening" << endl;
for(;;){
Connect = accept(Listener,(SOCKADDR*)&Server , &sizeOf);
cout << "CONNECTION MADE!" << endl;
thread t1((ClientHandler()) ,Connect);
}
}
【问题讨论】:
-
“无法适应”和“我的代码抛出运行时错误”不是问题描述。请详细说明。
-
对不起,但它只是说,该应用程序抛出运行时错误并返回 3。
-
即使
3也是新信息。您应该已经粘贴了确切的错误消息并表明您正在这样做。
标签: c++ multithreading sockets