1.修改群消息下载图片保存位置;
QString tmpImg = tr("%1/%2/Tmp/%3").arg(GlobalData::seaarespath).arg(GlobalData::myself->Id).arg(mgtio.Group_File_Name);
2.制作点对点聊天客户端(是否在同一网段);
服务器端:
clientsocket.cpp(void ClientSocket::receiveMessage())
else if(IS_SAME_NETWORK == type)
{
save = new RMessage_IsSameNetwork(IS_SAME_NETWORK);
in >> (RMessage_DELETE_FRIEND&)*save;
}
clientsocket.cpp(void ClientSocket::handleMessage(MessageBase *temp))
else if(IS_SAME_NETWORK == temp->m_type)
{
result = MysqlPool::GetInstance()->checkIpIsSameNetwork(temp);
if( SAME_NETWORK == result )
{
qDebug() << "result is SAME_NETWORK";
out << result;
out << (RMessage_IsSameNetwork&)*temp;
}
}
mysqlpool.cpp
qint32 MysqlPool::checkIpIsSameNetwork(MessageBase *save)
{
qDebug() << Q_FUNC_INFO;
Sqlhelper help;
if(!help.succ())
return DB_ERROR;
RMessage_IsSameNetwork* msg = dynamic_cast<RMessage_IsSameNetwork*>(save);
OnlineUserIP toUser, fromUser;
PreparedStatement* query = help.getpst("select UserIP, InnerIP from OnlineUser where OnlineUserId = ?");
query->setString(1, qPrintable(msg->fromId));
std::auto_ptr<ResultSet> rse(query->executeQuery());
if(rse.get())
{
if(rse->next())
{
fromUser.UserIP = QString::fromStdString(rse->getString(1));
fromUser.InnerIP = QString::fromStdString(rse->getString(2));
}
}
PreparedStatement* query1 = help.getpst("select UserIP, InnerIP from OnlineUser where OnlineUserId = ?");
query1->setString(1, qPrintable(msg->toId));
std::auto_ptr<ResultSet> rse1(query1->executeQuery());
if(rse1.get())
{
if(rse1->next())
{
toUser.UserIP = QString::fromStdString(rse1->getString(1));
toUser.InnerIP = QString::fromStdString(rse1->getString(2));
}
}
if(fromUser.UserIP == toUser.UserIP)
{
if( fromUser.InnerIP.left(fromUser.InnerIP.size() - fromUser.InnerIP.lastIndexOf('.') - 1) ==
toUser.InnerIP.left(toUser.InnerIP.size() - toUser.InnerIP.lastIndexOf('.') - 1) )
{
return SAME_NETWORK;
}
else
{
return NOT_SAME_NETWORK;
}
}
else
{
return NOT_SAME_NETWORK;
}
}
constant.h
class RMessage_IsSameNetwork: public MessageBase
{
public:
QString toId;
QString fromId;
RMessage_IsSameNetwork(){}
RMessage_IsSameNetwork(int type = IS_SAME_NETWORK){m_type = type;}
friend QDataStream& operator <<(QDataStream& qos,const RMessage_IsSameNetwork& ss)
{
qos <<ss.toId << ss.fromId;
return qos;
}
friend QDataStream& operator >> (QDataStream &qis, RMessage_IsSameNetwork& ss)
{
qis >> ss.toId >> ss.fromId;
return qis;
}
};
struct OnlineUserIP
{
QString UserIP;
QString InnerIP;
};
mysqlpool.cpp(enum ReplyType)
SAME_NETWORK,
NOT_SAME_NETWORK
mysqlpool.cpp(enum MessageType)
IS_SAME_NETWORK