• 基于Python通信程序的设计与实现


    目 录
    第一章 Python语言的面向对象编程思想 1
    第一节 Python语言面向对象编程概述 1
    第二节 Python的历史和发展 1
    第三节 Python的主要功能 2
    第二章 Python语言的线性编程思想 4
    第三章 Python语言的Socket编程思路 6
    第一节 通讯程序的通信协议 6
    1.1 UDP协议 6
    1.2 TCP/IP协议 7
    第二节 基本套接字(Socket) 8
    2.1 套接字(Socket)基本概念 8
    2.2 套接字(Socket)连接过程 9
    第三节 通讯程序的模型 11
    3.1 P2P模型 11
    3.2 客户端/服务器模型 12
    第四章 程序的设计及实现思路 13
    第一节 需求分析 13
    1.1功能需求 13
    1.2性能需求 13
    第二节 系统设计目标 14
    第三节 功能模块划分 14
    第四节 功能模块的说明 15
    4.1 初始化(广播用户信息) 15
    4.2 文本信息传输 15
    第五节 系统实现具体流程 15
    5.1 发送和接收广播的线程设计流程 15
    5.2 监听端口建立连接的线程设计流程 16
    5.3 命令处理线程的主要控制命令及其设计流程 16
    第五章 系统功能实现 18
    第一节 主界面 18
    第二节 聊天界面 19
    第三节 系统测试 19
    第五章 结论 21
    参考文献 22
    致 谢 23
    1.2性能需求
    首先要求程序要完全可靠,可以应付种种由于系统问题产生的错误,比如初始网络失败,对方突然下线等。要求提前设想到类似的尽可能多的可能发生的事件,做出相应的应对措施,并向用户提交简单易懂清晰明白的提示信息。
    其次,程序要有良好的容错性,当用户进行非法操作时或者系统本身出现问题时要能以最好的方式退出程序,避免发生程序假死现象。
    再次,开发文档要有好的易理解性,如果系统又要交由别人接手开发,或者自己由于种种原因需要进行二次开发,那么要保证以后能够清晰的理解整个系统的设计思路以及实现细节。
    最后要求程序对所运行之系统的硬件条件要求尽可能低,运行时内存占用尽可能小,响应速度要尽可能快。并且不发生内存泄漏之类影响系统运行的错误事件。并且要求易于维护及扩展。所以应该采用模块化开发,各个模块之间不要有太多的联系,以免维护困难。
    第二节 系统设计目标
    随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流 方式已经难以满足人们的交流要求,在互联网或局域网上即时的和好友取得联系,已经成为当今社会人们主流的联系方式。因此,两台计算机之间进行即时通讯、发送文件等交流方式已经成为必然潮流。作为整个计算机网络的基础,局域网用户之间进行即时通讯的需求更大,而且他们之间进行文件传输与共享的频率更高,因此有必要设计一款专门为局域网用户使用的即时通讯软件。
    当前存在的即时通讯软件很多,但其中很多一部分由于嵌入了太多的娱乐功能而不很实用。对于局域网用户来说,首先,由于他们之间进行通讯的不确定性和随机性,所以如果专门为他们建立一个服务器端的话,势必会造成很大的浪费,因此,本软件选择实用点对点服务模式,不需要服务器支持。其次,局域网用户之间进行交流的主要方式就是文字信息交流,因此,本软件实现的最基本的功能就是文字信息的传输。再次,局域网用户要频繁的进行文件的传输,所以本软件还实现了两个局域网用户之间文件的传输。最后,由于采用跨平台的C++类库Python4.8进行开发,因此本软件实现在不同的操作系统上运行,具有友好美观的界面。
    在非功能需求方面,在开发软件时,考虑系统的安全性,采用了安全的设计理念,防止了“黑客”入侵后的盗窃行为,同时也遏制了病毒程序的攻击。系统主要应用于局域网中,解决局域网内信息公告、信息交流、文件传送等问题。考虑软件的“通用性”,“可扩展性”,“相对独立性”等方面问题,实现软件开发的灵活性。
    第三节 功能模块划分
    本设计可以实现局域网内用户的自动检测,用户之间的个人信息管理,文字信息交流, 文件传输等功能。据此,本设计的功能模块一共可以分为5个:广播用户信息,个人信息管理,用户列表管理,文字信息传输。系统的总体功能模块图如图3.1所示:
    在这里插入图片描述

    图4.1 系统总体功能模块图

    VERSION 5.00
    Begin VB.Form Form1 
       BorderStyle     =   3  'Fixed Dialog
       Caption         =   "TCP客户端"
       ClientHeight    =   7125
       ClientLeft      =   5670
       ClientTop       =   2985
       ClientWidth     =   7260
       LinkTopic       =   "Form1"
       MaxButton       =   0   'False
       MinButton       =   0   'False
       ScaleHeight     =   7125
       ScaleWidth      =   7260
       ShowInTaskbar   =   0   'False
       Begin VB.VScrollBar VScroll1 
          Height          =   3135
          Left            =   3120
          TabIndex        =   12
          Top             =   2760
          Width           =   375
       End
       Begin VB.CommandButton Cquit 
          Caption         =   "退出"
          BeginProperty Font 
             Name            =   "宋体"
             Size            =   10.5
             Charset         =   134
             Weight          =   400
             Underline       =   0   'False
             Italic          =   0   'False
             Strikethrough   =   0   'False
          EndProperty
          Height          =   375
          Left            =   2760
          TabIndex        =   11
          Top             =   6360
          Width           =   1815
       End
       Begin VB.CommandButton Csend 
          Caption         =   "发送"
          BeginProperty Font 
             Name            =   "宋体"
             Size            =   10.5
             Charset         =   134
             Weight          =   400
             Underline       =   0   'False
             Italic          =   0   'False
             Strikethrough   =   0   'False
          EndProperty
          Height          =   375
          Left            =   4680
          TabIndex        =   10
          Top             =   5400
          Width           =   1455
       End
       Begin VB.TextBox textstatus 
          BeginProperty Font 
             Name            =   "宋体"
             Size            =   10.5
             Charset         =   134
             Weight          =   400
             Underline       =   0   'False
             Italic          =   0   'False
             Strikethrough   =   0   'False
          EndProperty
          Height          =   495
          Left            =   960
          TabIndex        =   8
          Top             =   1920
          Width           =   5295
       End
       Begin VB.TextBox textsend 
          Height          =   2295
          Left            =   3960
          TabIndex        =   7
          Top             =   2760
          Width           =   2775
       End
       Begin VB.TextBox textrec 
          Height          =   3135
          Left            =   600
          TabIndex        =   6
          Top             =   2760
          Width           =   2895
       End
       Begin VB.CommandButton Cclosed 
          Appearance      =   0  'Flat
          Caption         =   "断开连接"
          CausesValidation=   0   'False
          BeginProperty Font 
             Name            =   "宋体"
             Size            =   10.5
             Charset         =   134
             Weight          =   400
             Underline       =   0   'False
             Italic          =   0   'False
             Strikethrough   =   0   'False
          EndProperty
          Height          =   375
          Left            =   3960
          TabIndex        =   5
          Top             =   1080
          Width           =   1455
       End
       Begin VB.CommandButton Cconnect 
          Caption         =   "连接"
          BeginProperty Font 
             Name            =   "宋体"
             Size            =   10.5
             Charset         =   134
             Weight          =   400
             Underline       =   0   'False
             Italic          =   0   'False
             Strikethrough   =   0   'False
          EndProperty
          Height          =   375
          Left            =   1440
          TabIndex        =   4
          Top             =   1080
          Width           =   1455
       End
       Begin VB.TextBox textport 
          BeginProperty Font 
             Name            =   "宋体"
             Size            =   10.5
             Charset         =   134
             Weight          =   400
             Underline       =   0   'False
             Italic          =   0   'False
             Strikethrough   =   0   'False
          EndProperty
          Height          =   495
          Left            =   4080
          TabIndex        =   1
          Top             =   240
          Width           =   2175
       End
       Begin VB.TextBox textip 
          BeginProperty Font 
             Name            =   "宋体"
             Size            =   10.5
             Charset         =   134
             Weight          =   400
             Underline       =   0   'False
             Italic          =   0   'False
             Strikethrough   =   0   'False
          EndProperty
          Height          =   495
          Left            =   840
          TabIndex        =   0
          Top             =   240
          Width           =   2175
       End
       Begin VB.Label Label3 
          Caption         =   "状态"
          BeginProperty Font 
             Name            =   "宋体"
             Size            =   10.5
             Charset         =   134
             Weight          =   400
             Underline       =   0   'False
             Italic          =   0   'False
             Strikethrough   =   0   'False
          EndProperty
          Height          =   375
          Left            =   360
          TabIndex        =   9
          Top             =   2040
          Width           =   495
       End
       Begin VB.Label Label2 
          Caption         =   "端口"
          BeginProperty Font 
             Name            =   "宋体"
             Size            =   10.5
             Charset         =   134
             Weight          =   400
             Underline       =   0   'False
             Italic          =   0   'False
             Strikethrough   =   0   'False
          EndProperty
          Height          =   255
          Left            =   3480
          TabIndex        =   3
          Top             =   360
          Width           =   495
       End
       Begin VB.Label Label1 
          Caption         =   "地址"
          BeginProperty Font 
             Name            =   "宋体"
             Size            =   10.5
             Charset         =   134
             Weight          =   400
             Underline       =   0   'False
             Italic          =   0   'False
             Strikethrough   =   0   'False
          EndProperty
          Height          =   255
          Left            =   240
          TabIndex        =   2
          Top             =   360
          Width           =   495
       End
    End
    Attribute VB_Name = "Form1"
    Attribute VB_GlobalNameSpace = False
    Attribute VB_Creatable = False
    Attribute VB_PredeclaredId = True
    Attribute VB_Exposed = False
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    Android Studio javadoc 编译的时候一直报错 java.lang.IllegalArgumentException
    [python 知识巩固]python 变量、函数、类的命名规则
    安装适配依赖
    批量导出 PPT的备注到一个txt文本中
    动手学深度学习_目标检测
    【大咖说Ⅳ】肖桐教授:机器翻译中的高效神经网络模型
    解决Web server failed to start. Port XXXX was already in use.
    「科普」如何评价供应商的MES系统
    vue实现CBC加密/解密
    boost序列化单例3
  • 原文地址:https://blog.csdn.net/sheziqiong/article/details/127640756