目录
1、搜索用户
1.1、在friend.h里面定义槽函数
1.2、关联槽函数
1.3、搜索用户的时候,会弹出一个对话框来,在friend.cpp里面引入下面的头文件,专门用来输入数据的
1.4、获取输入信息,并使用Qstring来接收它
1.5、将上述代码打包,发送给服务器,服务器去搜索
1.6、在服务器端接收数据
A、在operate.h里定义函数,用int类型
B、在socket里面调用
1.7、测试
A、打开服务器,登录两个账号jack,lucy
B、在lucy界面查找jack
C、查找数据库里面的rose
D、查找不存在的dandan
1、搜索用户
客户端发送查看请求(发送用户的名字,在线状态),服务器将数据库中在线用户查询出来并发送给客户端,客户端接收用户信息并显示。
1.1、在friend.h里面定义槽函数
//查找用户
void searchUsr();
1.2、关联槽函数
//关联查找用户信号槽
connect(m_pSearchUsrPB, SIGNAL(clicked(bool)), this, SLOT(searchUsr()));
1.3、搜索用户的时候,会弹出一个对话框来,在friend.cpp里面引入下面的头文件,专门用来输入数据的
#include <QInputDialog>
1.4、获取输入信息,并使用Qstring来接收它
QString name = QInputDialog::getText(this, "搜索", "用户名:");
//将名字打印出来
//将名字打印出来
if(!name.isEmpty()){
qDebug()<<name;
}
1.5、将上述代码打包,发送给服务器,服务器去搜索
void Friend::searchUser()
{
//搜索用户的时候,会弹出一个对话框来
QString name = QInputDialog::getText(this, "搜索", "用户名:");
//将名字打印出来
if(!name.isEmpty()){
qDebug()<<name;
PDU *pdu =mkPDU(0);
memcpy(pdu->caData, name.toStdString().c_str(),name.size());
pdu->uiMsgType = ENUM_MSG_TYPE_SEARCH_USER_REQUEST;
TcpClient::getinstance().getTcpSocket().write((char*)pdu, pdu->uiPDULen);
free(pdu);
pdu = NULL;
}
}
1.6、在服务器端接收数据
A、在operate.h里定义函数,用int类型
int handleSearchUser(const char *name);
一共会出现三种情况:查找的人不存在,查找的人存在并且在线,查找的人存在但是不在线。
int OperateDB::handleSearchUser(const char *name)
{
if(NULL == name){
return -1;
}
//通过名字去数据库查看对应的记录
QString data = QString("select online from usrInfo where name = \'%1\'").arg(name);
QSqlQuery query;
query.exec(data);
if(query.next()){
//查看是否在线
int ret = query.value(0).toUInt();
if(1==ret){
return 1;
}
else if(0==ret) {
return 0;
}
}
else {
return -1;
}
}
B、在socket里面调用
case ENUM_MSG_TYPE_SEARCH_USER_REQUEST:
{
int ret = OperateDB::getInstance().handleSearchUser(pdu->caData);
PDU *respdu = mkPDU(0);
respdu->uiMsgType = ENUM_MSG_TYPE_SEARCH_USER_RESPOND;
if(-1==ret){
strcpy(respdu->caData,"No such people");
}
else if (1==ret) {
strcpy(respdu->caData,"online");
}
else if (0==ret) {
strcpy(respdu->caData,"offline");
}
//发送
write((char*)respdu, respdu->uiPDULen);
//释放空间
free (respdu);
respdu =NULL;
break;
}
1.7、测试
A、打开服务器,登录两个账号jack,lucy
B、在lucy界面查找jack
C、查找数据库里面的rose
D、查找不存在的dandan
成功