计算机网络课程设计(一)网络聊天程序的设计与实现

  • 实验题目

网络聊天程序的设计与实现

  • 实验目的

 1、了解Socket通信的原理,学会使用Socket进行简单的网络编程,在此基础上编写一个聊天程序。

2、了解Qt编程,熟悉C++语言。

  • 总体设计

 1、背景知识

套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。用户数据报协议(UDP,User Datagram Protocol)是一种无需建立连接就可以发送封装的 IP 数据包的传输层通信协议。它不提供数据包分组、组装、对数据包进行排序、报文到达确认、流量控制等功能。

Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应用程序,但这并不是 Qt 的全部;Qt 除了可以绘制漂亮的界面(包括控件、布局、交互),还包含很多其它功能,比如多线程、访问数据库、图像处理、音频视频处理、网络通信、文件操作等,这些 Qt 都已经内置了。

2、基本原理

Socket是一种“打开—读/写—关闭”模式的实现,服务器和客户端各自维护一个“文件”,在建立连接打开后,可以向文件写入内容供对方读取或者读取对方的内容,通讯结束时关闭文件。

Socket在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口,供应用层调用实现进程在网络中的通信。

Socket保证了不同计算机之间的通信,对于网站,通信模型是服务器与客户端之间的通信。两端都建立一个socket对象,然后通过socket对象对数据进行传输。通常服务器处于一个无限循环,等待客户端的连接。

3、模块介绍

(1)服务器端:监听本网络上的所有Ip,如有连接请求,则通过连接,与客户端进行一对一通信。

(2)客户端:通过给定的端口号与Ip地址连接到服务器端,与服务器端进行通信。

 4、设计步骤

(1)服务端

  • 加载套接字库,创建套接字(QTcpSocket)
  • 绑定套接字到一个 IP 地址和一个端口上(bind())
  • 将套接字设置为监听模式等待连接请求(listen())
  • 请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept())
  • 用返回的套接字和客户端进行通信(send())
  • 返回,等待另一连接请求
  • 关闭套接字,关闭加载的套接字库

(2)客户端 

  • 加载套接字库,创建套接字(QTcpSocket)
  • 向服务器发出连接请求(connect())
  • 和服务器端进行通信(send())
  • 关闭套接字,关闭加载的套接字库

 

  • 详细设计

1、程序流程图

2、代码

 (1)服务器端

代码组成:

server.h

#ifndef SERVER_H
#define SERVER_H

#include <QMainWindow>
#include <QTcpSocket>
#include <QTcpServer>

QT_BEGIN_NAMESPACE
namespace Ui { class server; }
QT_END_NAMESPACE

class server : public QMainWindow
{
    Q_OBJECT

public:
    server(QWidget *parent = nullptr);
    ~server();

private:
  
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值