- 31
- 0
用QT做一个简易聊天界面
定义了一个rec函数,用来循环接收数据
void MainWindow::rec()
{
while(true)
{
//ui.display_text->insertPlainText("ok");
if (::recv(s, sztext, sizeof(sztext), 0)>0)
{
QString str_message_2 = QStringLiteral("对方说>>") + QString(QLatin1String(sztext)) + "\n";
ui.display_text->insertPlainText(str_message_2);
}
}
}
在连接按钮的槽函数和发送按钮的槽函数定义里分别调用rec函数,想法是在连接后和发送后开始接收数据,但是这样做有无限循环好像程序就不能跑了。
void MainWindow::on_connect_bt_clicked()
{
::WSAStartup(w, &data1); //初始化套接字库
s = ::socket(AF_INET, SOCK_STREAM, 0); //创建TCP套接字
addr.sin_family = AF_INET; //初始化地址结构
bool ok;
addr.sin_port = htons(ui.Port_Edit->text().toInt(&ok,10));
addr.sin_addr.S_un.S_addr = inet_addr(ui.IP_addr_Edit->text().toStdString().data());
ui.display_text->insertPlainText(QStringLiteral("正在尝试连接服务器!!!\n\n"));
ui.display_text->moveCursor(QTextCursor::End);//将光标定位到末尾
if (::connect(s, (sockaddr*)&addr, sizeof(addr))==0)
{
QString Str_notice = QStringLiteral( "已成功连接到主机" )+ ui.IP_addr_Edit->text()+"\n\n";
ui.display_text->insertPlainText(Str_notice);
ui.display_text->moveCursor(QTextCursor::End);
rec();
}
else
{
ui.display_text->insertPlainText(QStringLiteral("连接失败!!请检查输入的IP地址与端口号,也有可能是网络原因或其他未知错误"));
ui.display_text->moveCursor(QTextCursor::End);
}
}
void MainWindow::on_send_bt_clicked()
{
int status = ::send(s, ui.message_Edit->text().toStdString().data(), sizeof(ui.message_Edit->text().toStdString().data()), 0);
if (status > 0)
{
QString str_message = QStringLiteral("消息{") + ui.message_Edit->text() + QStringLiteral("}已发出") + "\n";
ui.display_text->insertPlainText(str_message);
ui.display_text->moveCursor(QTextCursor::End);
}
else if(status == 0)
{
ui.display_text->insertPlainText(QStringLiteral("未发送任何数据!!\n"));
ui.display_text->moveCursor(QTextCursor::End);
}
else if (status < 0)
{
ui.display_text->insertPlainText(QStringLiteral("Error:发生未知错误!\n"));
ui.display_text->moveCursor(QTextCursor::End);
}
rec();
} 0
打赏
收藏
点击回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

