QT TCP客户端、服务端通信问题

ryanlunar 2011-11-03 09:04:15
最近在做一个程序,分客户端、服务端,其间通过TCPScoket进行通信。
在客户端有一个登录界面,我想把登录信息传递给服务端,然后服务端验证登录者的身份,然后返回一个信息。
服务端相关代码
char buffer_info[1024]={0};
client->read(buffer_info,client->bytesAvailable());
QString buffer=QString(buffer_info);
if(buffer.section(',',0,0)=="0")
{
this->ID=buffer.section(',',1,1);
query.prepare("SELECT * FROM db_candidates WHERE ID=? ");//从数据库中查找是否存在该用户ID
query.bindValue(0,ID.toInt());
if(query.exec())
{
QByteArray message;
message.append("1");//如果存在返回消息“1”
client->write(message.data());
qDebug() <<"success";
}
else
;
}


客户端相关代码
this->Name=ui->lineEdit->text();
this->ID=ui->lineEdit_2->text();
this->info=QString("0,").append(this->ID);//将ID等数据传递给info进而通过client传递给服务端
client.connectToHost("127.0.0.1",5678);//发送ID到服务端
char buffer_info[1024]={0};//开始准备接收服务端回馈的消息
client.read(buffer_info,client.bytesAvailable());
QString buffer=QString(buffer_info);
qDebug()<<"success";
if(buffer.toInt()==1)//通信成功
{
infoToServer.show();
this->~candidateLogin();
//client.~Client();
}
else//通信不成功
{
ui->label_5->setVisible(false);
ui->label_6->setVisible(true);
}




纠结了很长时间了 高手多多指点哦。我是菜鸟。
...全文
815 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
*_潇_* 2014-03-05
  • 打赏
  • 举报
回复
请问, QT怎么通过TCP服务端向所有客户端发送信息呢?
ryanlunar 2011-11-07
  • 打赏
  • 举报
回复
问题解决了 谢谢你哦
乔巴好萌 2011-11-05
  • 打赏
  • 举报
回复
你可以抓包看下,看server是不是把包发送出去了
如果是的话 应该是client的接受有问题
client应该阻塞的读server的数据 或者你用select非阻塞的读数据
ryanlunar 2011-11-03
  • 打赏
  • 举报
回复
嘿嘿 我的意思呢
是我在客户端登陆界面输入ID之后 就会调用socket来把这个数据ID传给服务端
服务端有一个对应的数据库表,从这个表中验证该ID是否存在,如果存在的话 就是query.exec能正确执行 就会返回true
这样就会回馈客户端一条内容为“1”的消息


现在的问题 是 服务端可以收到ID(一开始发送的数据ID) 也可以通过write将“1”写进socket
可是在客户端收不到这条数据。。


不知道我表达清楚没有 呵呵
乔巴好萌 2011-11-03
  • 打赏
  • 举报
回复
没看明白你想问什么?
哪里不成功啊?
你抓包看了数据发过去了吗?即使没抓包,client连接服务器后 netstat -an状态是ESTABLISHED吗

16,229

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧