多线程编程,编译时提示invalid use of member (did you forget the &),找不到原因。
#include "igrs.h"
//Singlecast Message Server.
void CDevice::SingleMsgServer(string strHost, unsigned uPort)
{
struct sockaddr_in addr;
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
inet_aton(strHost.c_str(), &addr.sin_addr);
addr.sin_port = htons(uPort);
int s = socket(AF_INET, SOCK_STREAM, 0);
if (s < 0)
{
perror("socket error in SingleMsgServer\n");
return ;
}
if (bind(s, (struct sockaddr *)&addr, sizeof(addr)) < 0)
{
perror("bind error in SingleMsgServer\n");
return ;
}
if (listen(s, LISTEN_MAX_NUM) < 0)
{
perror("listen error in SingleMsgServer\n");
return ;
}
struct sockaddr_in clientAddr;
socklen_t len;
pthread_t th;
for (;;)
{
int newS = accept(s, (struct sockaddr *)&clientAddr, &len);
if (newS < 0)
{
perror("accept error in SingleMsgServer.\n");
}
//create a thread which runs handleSingleMsg to handle the new connect.
//错误在这一行
if (pthread_create(&th, NULL, (void *(*)(void *))HandleSingleMsg, (void *)&newS) < 0)
{
perror("pthread_create error in SingleMsgServer.\n");
}
}
}
//When SingleMsgServer accepts a connect request,
//HandleSingleMsg handles the connect as a thread.
void CDevice::HandleSingleMsg(int fd)
{
int n;
char tmp[BUF_MAX_SIZE];
for (;;)
{
if ((n = recv(fd, tmp, BUF_MAX_SIZE, 0)) < 0)
{
perror("recv error in SingleMsgServer.\n");
}
else
{
tmp[n] = '\0';
string ackMsg = MsgResolver(tmp);
//if gotten message is request message, then send response message.
if (!ackMsg.empty())
{
if (send(fd, ackMsg.c_str(), ackMsg.size(), 0) < 0)
{
perror("send error in SingleMsgServer.\n");
}
}
}
}
}
# g++ -c single_msg_server.cpp
single_msg_server.cpp: In member function ‘void CDevice::SingleMsgServer(std::string, unsigned int)’:
single_msg_server.cpp:38: 错误:invalid use of member (did you forget the ‘&’ ?)
使用的编译是g++.
...全文
相关推荐
idea 找不到符号或找不到包的几种解决方法
主要介绍了idea 找不到符号或找不到包的几种解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
IntelliJ IDEA 报错:找不到包或者找不到符号的问题及解决方案
主要介绍了IntelliJ IDEA 报错:找不到包或者找不到符号的问题及解决方案,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
今天小编就为大家分享一篇解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
删除文件:提示找不到该项目
win7系统上文件删除不了,删除的时候弹出提示“找不到该项目”,该资源就可以有效的出来此问题,快速的删除此文件。
解决idea使用maven编译正常但是运行项目时却提示很多jar包找不到的问题
主要介绍了解决idea使用maven编译正常但是运行项目时却提示很多jar包找不到的问题,本文分多种情形给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下


