客户端tcp发送表情文件信息

//文本数据包格式:群聊标志 + 发信息员工QQ号 + 收信息员工QQ号(群QQ号)
//表情数据包格式:群聊标志 + 发信息员工QQ号 + 收信息员工QQ号(群QQ号)
//msgType 0表情信息 1文本信息 2文件信息
void TalkWindowShell::updateSendTcpMsg(QString& strData, int& msgType, QString fileName)
{
	//获取当前活动聊天窗口
	TalkWindow* curTalkWindow = dynamic_cast<TalkWindow*>(ui.rightStackedWidget->currentWidget());
	QString talkId = curTalkWindow->getTalkId();

	QString strGroupFlag;
	QString strSend;
	if (talkId.length() == 4)//群QQ的长度
	{
		strGroupFlag = "1";
	}
	else
	{
		strGroupFlag = "0";
	}

	int dataLength = strData.length();
	const int sourceDataLength = dataLength;
	QString strdataLength;

	if (msgType == 1)//发送文本信息
	{
		//文本信息的长度约定为5位
		if (dataLength == 1)
		{
			strdataLength = "0000" + QString::number(sourceDataLength);
		}
		else if (dataLength == 2)
		{
			strdataLength = "000" + QString::number(sourceDataLength);

		}
		else if (dataLength == 3)
		{
			strdataLength = "00" + QString::number(sourceDataLength);

		}
		else if (dataLength == 4)
		{
			strdataLength = "0" + QString::number(sourceDataLength);

		}
		else if(dataLength == 5)
		{
			strdataLength = QString::number(sourceDataLength);
		}
		else
		{
			QMessageBox::information(this,
				QString::fromLocal8Bit("提示"),
				QString::fromLocal8Bit("不合理的数据长度!"));
		}

		//文本数据包格式:群聊标志 + 发信息员工QQ号 + 收信息员工QQ号(群QQ号)
		strSend = strGroupFlag+gLoginEmployeeID+talkId + "1" + strdataLength + strSend;
	}
	else if(msgType == 0)//表情信息
	{
		//表情数据包格式:群聊标志 + 发信息员工QQ号 + 收信息员工QQ号(群QQ号)
		// + 信息类型 + 表情个数 + images + 数据
		strSend = strGroupFlag + gLoginEmployeeID + talkId
			+ "0" + strData;
	}
	else if (msgType == 2)//文件
	{
		//文本数据包格式:群聊标志 + 发信息员工QQ号 + 收信息员工QQ号(群QQ号)
		// + 信息类型(2) + 文件长度 + "bytes" + 文件名称 + "data_begin" + 文件内容
		QByteArray bt = strData.toUtf8();
		QString strLength = QString::number(strData.toUtf8().length());
		
		strSend = strGroupFlag + gLoginEmployeeID + talkId
			+ "2" + strLength + "bytes" + fileName + "data_begin" + strData;
	}

	QByteArray dataBt;
	dataBt.resize(strSend.length());
	dataBt = strSend.toUtf8();
	m_tcpClientSocket->write(dataBt);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值