资源简介
这个是别人的一个C++、qt环境下的C/S聊天器,我稍微改了一下:
注:如果在本机上运行服务端和客户端。则在客户端上只需输入127.0.0.1即可
代码片段和文件信息
#include “chat.h“
Chat::Chat()
{
serverSocket = NULL;
server = NULL;
client = NULL;
setupUi(this);
login = new LoginDialog;
login->show();
connect(login SIGNAL(showChatWindow()) this SLOT(showAndHideSlot()));
connect(login SIGNAL(sendEnterMessage(QString QString))
thisSLOT(enterSlot(QString QString )));
connect(writeMessageEdit SIGNAL(textChanged()) this SLOT(changeButtonStateSlot()));
connect(aboutButton SIGNAL(clicked()) this SLOT(createAboutSlot()));
connect(sendButton SIGNAL(clicked()) this SLOT(appendMessageSlot()));
connect(quitButton SIGNAL(clicked()) qApp SLOT(quit()));
}
void Chat::showAndHideSlot()
{
delete login;
this->show();
}
void Chat::createAboutSlot()
{}
void Chat::enterSlot(QString name QString host)
{
port = 22222;
if (host.isEmpty())
{
socketServer();
}
else
{
socketClient(host);
}
userName = name;
onlineMessageList->addItem(name);
}
void Chat::changeButtonStateSlot()
{
bool boo_dis = writeMessageEdit->toPlainText().isEmpty();
sendButton->setDisabled(boo_dis);
}
void Chat::appendMessageSlot()
{
QString content = writeMessageEdit->toPlainText();
if (content.isEmpty())
{
QMessageBox::warning(this “出错“ QString::fromLocal8Bit(“发送的内容不能为空“));
return;
}
nowDateTime = QDateTime::currentDateTime();
showMessageEdit->append(
QString(“\n[%1] %2 %3\n%4“)
.arg(nowDateTime.toString(“yyyy-MM-dd hh:mm:ss“))
.arg(userName)
.arg(QString::fromLocal8Bit(“说道:“))
.arg(content) );
QDataStream out;
if (serverBool)
{
out.setDevice(serverSocket);
}
else if (!serverBool)
{
out.setDevice(client);
}
int mark = 0;
out << mark;
out << userName << content;
writeMessageEdit->clear();
}
void Chat::socketServer()
{
serverBool = true;
server = new QTcpServer(this);
serverSocket = new QTcpSocket(this);
server->listen(QHostAddress::Any port);
connect(server SIGNAL(newConnection()) this SLOT(newConnectionSlot()));
}
void Chat::newConnectionSlot()
{
serverSocket = server->nextPendingConnection();
connect(serverSocket SIGNAL(readyRead()) this SLOT(newDataSlot()));
connect(serverSocket SIGNAL(disconnected()) this SLOT(deleNameSlot()));
}
void Chat::socketClient(QString host)
{
serverBool = false;
client = new QTcpSocket(this);
client->connectToHost(host port);
connect(client SIGNAL(connected()) this SLOT(addSlot()));
connect(client SIGNAL(readyRead()) this SLOT(newDataSlot()));
connect(client SIGNAL(disconnected()) this SLOT(deleNameSlot()));
}
void Chat::addSlot()
{
QString myName = userName;
QString content;
QDataStream out(client);
int mark = 11;
out << mark;
out << myName << content;
}
void Chat::newDataSlot()
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4704 2006-09-28 01:43 source\chat.cpp
文件 1142 2006-09-27 22:56 source\chat.h
文件 6636 2010-05-26 16:42 source\debug\BuildLog.htm
文件 169931 2010-05-26 16:39 source\debug\chat.obj
文件 137674 2010-05-26 16:39 source\debug\login.obj
文件 71125 2010-05-26 16:39 source\debug\main.obj
文件 3308 2010-05-26 16:38 source\debug\moc_chat.cpp
文件 76581 2010-05-26 16:39 source\debug\moc_chat.obj
文件 3258 2010-05-26 16:38 source\debug\moc_login.cpp
文件 58482 2010-05-26 16:39 source\debug\moc_login.obj
文件 67 2010-05-26 16:42 source\debug\mt.dep
文件 103936 2010-05-26 16:42 source\debug\source.exe
文件 878 2010-05-26 16:42 source\debug\source.exe.intermediate.manifest
文件 1426808 2010-05-26 16:42 source\debug\source.ilk
文件 1534976 2010-05-26 16:42 source\debug\source.pdb
文件 643 2006-09-21 21:46 source\login.cpp
文件 446 2006-09-21 21:42 source\login.h
文件 6545 2006-09-22 16:09 source\login_ui.h
文件 234 2006-09-21 21:38 source\main.cpp
文件 6688 2010-05-26 16:42 source\Makefile
文件 7162 2010-05-26 16:42 source\Makefile.Debug
文件 7246 2010-05-26 16:42 source\Makefile.Release
文件 2829 2006-09-25 22:40 source\moc_chat.cpp
文件 2786 2006-09-25 21:42 source\moc_login.cpp
文件 7605248 2010-05-26 16:48 source\source.ncb
文件 391 2010-05-26 16:41 source\source.pro
文件 877 2010-05-26 16:38 source\source.sln
..A..H. 13312 2010-05-26 16:48 source\source.suo
文件 10953 2010-05-26 16:42 source\source.vcproj
文件 1495 2010-05-26 16:48 source\source.vcproj.lei-PC.lei.user
............此处省略9个文件信息
- 上一篇:16C++MFC课程设计之吹泡泡游戏
- 下一篇:MFC 图数据结构 最短路径
相关资源
- 16C++MFC课程设计之吹泡泡游戏
- 白话C++全本23章
- C++做的Ftp服务器
- C++程序设计教程第二版实验指导-钱能
- 基于循环双向链表的大整数计算器c
- C++上机考试系统包括100道题
- c++实现频谱分析,可用于对傅里叶变
- C++(OPENCV)摄像头标定代码带图片O
- 基于winPcap开发嗅探器c++
- C++课程设计之水电煤气管理系统
- DEV C++ 5.0 官方原版
- C-Minus编译器
- dev c++中文安装包
- C++实现指针式时钟Sample
- VC++ 大鱼吃小鱼游戏源码
- QT学习必须要有的资料包含中文书籍和
- 用过最好用的C/C++/STLchm格式的帮助文
- c++程序设计教程 第二版 课后习题答案
- 使用C++语言读取*.mat文件中的数据
- C++实现多语言程序Demo
- Visual C++ 2008 Redistributables
- 五子棋C++源代码实现禁手
- C++ 学籍管理系统
- Hopfield求解TSP源程序及结果C++
- VC++操作excel程序
- 矩阵运算程序VC++矩阵运算程序
- 基于VC++实现的人脸检测
- KWIC问题C++版
- Sams Teach Yourself C++ in One Hour a Day (8
- 卷积神经网络代码c++
评论
共有 条评论