基于TCP的网络聊天程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于TCP 的网络聊天程序

问题概述:问题概述:

网络聊天是网络应用中的一种常见的功能。TCP 是一种可靠的、面向连接、面向数据流的传输协议,多数网络协议都使用TCP 协议,包括HTTP 和FTP ,TCP 协议非常适合数据的连续传输。协议非常适合数据的连续传输。

技术难点:技术难点: TCP 通信协议;QTcpsocket 的使用。的使用。

实践方案:实践方案:

在linux_ubuntu 下使用qt_eclipse 编写c++程序。程序。

由面向对象的思想,为了实现程序,在server 终端部分有3个类:个类: 1. serve

2. tcpclient

3. tcpserve

Serve 类是继承自QTcpServer,实现TCP 协议的服务器;协议的服务器;

Tcpclient 继承自QTcpSocket ,实现一个TCP 套接字;套接字; Tcpserve 是一个QDialog,负责服务器终端的对话框显示与控制。负责服务器终端的对话框显示与控制。 如下是对serve 的实现代码:的实现代码:

Server .h

#include <QtNetwork>

#include "tcpclientsocket.h"

class Server : public QTcpServer

{Q_OBJECT

public: Server(QObject *parent = 0,int port=0);

QList<TcpClientSocket*>tcpClientSocketList;

signals:

voidupdateServer(QString,int); public slots:

voidupdateClients(QString,int);

voidslotDisconnected(int);

protected:

voidincomingConnec on(intsocketDescriptor);}; ____________________________________________________________________ Tcpclient.h

#include <QtGui>

#include <QtNetwork> classTcpClientSocket : public QTcpSocket

{Q_OBJECT

public:

TcpClientSocket(QObject *parent=0);

~TcpClientSocket();

signals:

voidupdateClients(QString,int);

void disconnected(int);

protected slots:

voiddataReceived();

voidslotDisconnected();};

__________________________________________________________________ Tcpserver.h .h

Tcpserver

#include <QtGui>

#include <QtNetwork>

#include "server.h"

classTcpServer : public QWidget

{Q_OBJECT

public:

TcpServer(QWidget *parent=0, Qt::WindowFlags f=0 );

~TcpServer();

public:

QListWidget *ListWidgetContent;

QLabel* LabelPort;

QLineEdit* LineEditPort;

QPushBu on* PushBu onCreate;

int port;

Server *server;

public :

voidslotCreateServer();

voidupdateServer(QString,int);};

________________________________________________________________

Server.cpp

#include <QtNetwork>

#include "server.h"

Server::Server(QObject *parent,int port): QTcpServer(parent){

listen(QHostAddress::Any,port);}

void Server::incomingConnec on(intsocketDescriptor)

{TcpClientSocket *tcpClientSocket = new TcpClientSocket(this);

connect(tcpClientSocket,SIGNAL(updateClients(QString,int)),this,SLOT(updateClients( QString,int)));

connect(tcpClientSocket,SIGNAL(disconnected(int)),this,SLOT(slotDisconnected(int))); tcpClientSocket->setSocketDescriptor(socketDescriptor); tcpClientSocketList.append(tcpClientSocket);}

void Server::updateClients(QStringmsg,int length)

{emitupdateServer(msg,length);

相关文档
最新文档