QT TCP网络通信问题 20

客户端:tcpsocket->write((char*)&mesg,sizeof(mesginfo));mesg是一个结构体typedefstructmesginfo{m... 客户端:
tcpsocket->write((char *)&mesg, sizeof(mesginfo));

mesg是一个结构体
typedef struct mesginfo
{
mesgMode MESGMODE; //消息模式
Info info; //消息信息
QString mesg; //消息内容【主要内容】
QString mesgadd; //消息附加内容【接收者|发送者|发送时间】
}mesginfo;

服务器端read读取:
tempsocket->read((char*)&mesg, sizeof(mesginfo));

从客户端发送信息,能够触发服务器的readyread信号 但是读不到数据呀 我在网站上找了很久,没有找到解决方法 求教呀!

非常感谢!!
展开
 我来答
百度网友180fa75
2013-07-11 · TA获得超过337个赞
知道小有建树答主
回答量:416
采纳率:100%
帮助的人:243万
展开全部
客户端要流程:流程:
1.创建tcpSocket,tcpClient= new QTcpSocket(this);
2.关联信号connected和槽函数startTransfer,
connect(tcpClient,SIGNAL(connected()),this,SLOT(startTransfer()));
其中信号connected在连接服务器成功(即本客户端执行 tcpClient->connectToHost,得到服务器的成功响应)时发射,
3.关联信号bytesWritten和槽函数updateClientProgress,
connect(tcpClient,SIGNAL(bytesWritten(qint64)),this,SLOT(updateClientProgress(qint64)));
其中信号bytesWritten在当有数据发送成功时(即本客户端执行 tcpClient->write(outBlock);
服务器的成功收outBlock时)时发射,此时执行updateClientProgress来更新进度条并接着发送剩余数据。
4.连接到某个ip的某个端口,tcpClient->connectToHost(QHostAddress(ui->hostLineEdit->text()),ui->portLineEdit->text().toInt())
服务端:流程
1. 创建 QTcpServer tcpServer;
使之监听本机的某个端口,tcpServer.listen(QHostAddress("192.168.1.100"), 6666);
2. 关联信号newConnection和槽函数sendMessage,connect(&tcpServer, SIGNAL(newConnection()),
this, SLOT(acceptConnection()));其中信号newConnection在有客户端的连接请求(即客户端执行
tcpSocket->connectToHost)时发射,此时执行acceptConnection;
3. 实现槽函数acceptConnection,在里面从tcpServer取得已经建立但挂起的QTcpSocket连接
tcpServerConnection = tcpServer.nextPendingConnection();
并关联信号readyRead和槽函数updateServerProgress,
connect(tcpServerConnection, SIGNAL(readyRead()), this, SLOT(updateServerProgress()));
4. 实现槽函数updateServerProgress。
追问
连接那些已经做好,我只想知道 ,如果我要以结构体传送的话,如何进行,我的方法是有问题吗,哪里有问题呢?非常感谢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式