实现一对一聊天程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实现一个一对一的聊天程序
一实习题目
实现一个一对一的聊天程序。其基本过程如下:服务器首先启动,创建套接字后等待客户的连接;客户启动以后,创建套接字,然后和服务器建立连接;连接建立后,客户机和服务器可以通过建立的套接字连接进行通信。服务器和客户端可以是一台电脑上的两个进程,也可以分别部署在两台电脑上。
二原理概述
本题是一个简单的聊天室程序,采用客户/服务器模式,分为客户端程序和服务器端程序。由于服务器只能支持一个客户,实际上是一个点对点通信的程序。客户端程序和服务器程序通过网络交换聊天字符串内容,并在窗口的列表框中显示。重点是流式套接字对象的使用,处理网络事件的方法。本此课程设计是利用网络聊天程序的基本设计思想,并按照网络通信的协议设计出来的一个基于UDP 的网络聊天程序。端口号拼接到IP地址即构成了套接字(socket)。套接字(socket)=(IP地址:端口号)。在网络编程时常常把套接字作为应用进程和运输层协议之间的接口。当应用进程(客户或服务器)需要使用网络进行通信时,必须首先发出socket系统调用,请求操作系统为其创建一个“套接字”。这个调用的实际效果是请求操作系统把网络通信所需要的一些资源分配给该应用进程。操作系统为这些资源的总和用一个叫做套接字描述符的号码来表示,然后把这个套接字描述符返回给应用进程。此后,应用进程所进行的网络操作都必须使用这个套接字描述符。
三设计方案
1 问题分析:
本次计算机网络与通信实习的任务是设计一个一对一的聊天程序。根据课程设计要求程序采用客户/服务器模式,分为客户端程序和服务器端程序。其基本过程如下:服务器首先启动,创建套接字后等待客户的连接;客户启动以后,创建套接字,然后和服务器建立连接;连接建立后,客户机和服务器可以通过建立的套接字连接进行通信。服务器和客户端可以是一台电脑上的两个进程,也可以分别部署在两台电脑上。客户端程序和服务器程序通过网络交换聊天字符串内容,并在窗口的列表框中显示。重点是流式套接字对象的使用,处理网络事件的方法。
2 设计思路:
程序采用VB语言编写,运用UDP面向无连接数据报协议完成实验,程序的核心是运用的空间为VB网络编程中的Winsock控件。数据之前不必建立连接,只需要将Winsock绑定到一个端口上,其他无连接协议的Winsock若想向此处发送数据,需要指明地址和端口。
(1)将RemoteHost 属性设置为另一台计算机的名称或者IP地址。
(2)将RemotePort 属性设置为另一台计算机Winsock控件所绑定的LocalPort 属性。
(3)调用Bind 方法,指定使用的LocalPort。
3 系统模块结构:
根据程序设计要求,设计出整个网络聊天程序的设计框图。
服务器 客户端
系统总设计流程图
主程序
服务器端主流程图 客户端主流程图
四 程序编写
1 通过建立工程,设计出网络服务器程序,其设计过程及源程序代码如下。
(1)创建一个新的Standard EXE 工程。
(2)将缺省的窗体的名称修改为PeerA 。
(3)将窗体的标题修改为“服务器”。
(4)在窗体中放入一个 Winsock 控件,并将其命名为 UDPSever 。
(5)在Winsock 控件的“属性”页上,单击“Protocol ”属性,并将该属性值修改为 UDPProtocol 。
(6)在窗体中添加两个TextBox控件。将第一个命名为txtSend,第二个命名为txtOutput。
(7)为窗体增加如下的代码。
UDP聊天服务器程序:
Private Sub Combo1_Click()
=
End Sub
Private Sub Check1_Click() '设置隶书字体
If = 1 Then
= "隶书"
Else
= "宋体"
End If
End Sub
Private Sub Check2_Click() '设置下划线字体
If = 1 Then
= True
Else
= False
End If
End Sub
Private Sub Check3_Click() '设置斜体字体
If = 1 Then
= True
Else
= False
End If
End Sub
Private Sub Check4_Click() '设置字体大小为18榜
If = 1 Then
= 18
Else
= 10
End If
End Sub
Private Sub Form_Load()
= ‘设置下拉框,选择更多的字体
Dim i As Integer
For i = 0 To - 1
(i)
Next
With UDPSever ‘控件的名字为UDPSever
.RemoteHost= "" ‘服务器主机IP名称
.RemotePort = 1001 ‘连接的端口号
.Bind 1002 ‘绑定到本地的端口
End With
End Sub
Private Sub txtSend_Change()
‘在键入文本时,立即将其发送出去
End Sub
Private Sub UDPSever _DataArrival (ByVal bytesTotal As Long)
‘在服务器接收框中显示客户端传送的消息Dim strData As String
strData
= strData
End Sub
2 通过建立工程,设计出网络客户端程序,其设计过程及源程序代码如下。UDP聊天客户端程序:
(1)在工程中添加一个标准窗体。
(2)将窗体的名字修改为frmPeerB。
(3)将窗体的标题修改为“Peer B”。
(4)在窗体中放入一个Winsock 控件,并将其命名为udpClient。
(5)在“属性”页上,单击“协议”并将协议修改为“UDPProtocol”。
(6)在窗体上添加两个TextBox 控件。将第一个命名为txtSend,第二个命名为txtOutput。
(7)在窗体中添加如下的代码。
Private Sub Form_Load()
= ‘设置下拉框,选择更多的字体
Dim i As Integer
For i = 0 To - 1
(i)
Next
With udpClient ‘控件的名字为udpPeerB
.RemoteHost=" ‘客户端主机IP名称
.RemotePort = 1002 ‘连接的端口号
.Bind 1001 ‘绑定到本地的端口
End With
End Sub
Private Sub txtSend_Change()
‘在键入文本时,立即将其发送出去
End Sub
Private Sub udpClient_DataArrival (ByVal bytesTotal As Long)
‘在客服端接收框中显示服务器传送的消息Dim strData As String
strData
= strData
End Sub
五运行结果