admin 管理员组

文章数量: 887021


2023年12月22日发(作者:常量定义的标识符是下列选项中的哪一项)

实验一:Socket通信

一、实验目的和要求

1.

学习网络中进程之间通信的原理和实现方法;

2.掌握在VB或VC++等集成开发环境中编写网络程序的方法;

3.编写一个简单的聊天程序:1)最低要求实现两人一组的两台计算机之间的收发文本及其显示;2)再高要求是多人一组的多台机器之间的文本、语音等聊天和数据的记录。只交电子报告,报告中包括:a)程序结构说明;b)关键代码和算法说明; c)程序的运行结果截图及其说明(截图文件格式为.jpg,每一幅图的大小不超过30K)。

4.在实验结束之前完成,如有抄袭一律以零分记。

5. 写明通信双方的IP地址和端口。

二、实验设备及分组

1.Windows2000以上操作系统;

2.VB和Visual C++ 6.0语言环境;

3.每人一台PC机。

三、实验内容和步骤

1.程序及其说明

设计思想:

此次实验运用VB语言来实现计算机之间通信,用TCP协议在应用层上面进行程序的编写,实现数据在对等层之间进行传送,主要用到Winsock这个控件。Winsock控件的作用简单说就是可以用于两台或多台机器间通信,这次实验主要用到了winsock的Locallip(返回本机IP),remotehome(返回通信对方的IP),remoteport(设置通信端口号),connect(连接),senddata(发送数据),getdata(接受数据),state(返回当前winsock的当前状态)等几个功能。

整个聊天界面包括两个菜单(文件、关于)、二个text文本框(一个聊天记录文本框,一个消息发送文本框)、四个fame框、一个本机IP和端口号、三个服务器IP和端口号、两个commend按钮、一个发送选择选项以及一个winsock空间组成。主要实现两台或多台计算机之间的简单聊天和文件传输。运用每一台从机一个winsock控件,实现主机连接多个从机,主机能广播发给各个从机信息,也能看到从机发的信息,实现一对多的简单聊天。在本机IP地址内可以看到本机在所连接的局域网中的IP地址,端口号可以随意设置,以方便别的客户机连接此计算机。三个服务器框最多可以同时连接三个服务器,在相应的IP地址和端口号文本框中输入内容,连接。连接完成之后就可以广播消息进行一对多的聊天。这个程序目前只能做到简单聊天,对于文件传输还不能实现,这个我会在以后的时间中不段完善的。还有一个问题是要多加一台计算机实现通信就要多加一个winsock控件,这样如果计算机多了之后就实现就比较麻烦,所以这方面也还有待改进。

2.各程序段说明:

Private Sub exit_Click() '菜单栏→文件→退出

End

End Sub

Private Sub about_Click()

MsgBox ("通信1082 郑启航 1081302234!", , "关于") '菜单栏→关于

End Sub

Private Sub Command2_Click()

'ip = InputBox("请输入IP地址")

Host = Trim() '设置要连接的IP

Port = '设置客户端端口号

t

Host = Trim() '服务器2

Port =

t

Host = Trim() '服务器3

Port =

t

End Sub

Private Sub Command1_Click()

ta '发送text2中的内容,实现数据的发送

= & "主机" & ":" & & vbCrLf '在text1中显示聊天记录

ta

= & "主机" & ":" & & vbCrLf

ta

= & "主机" & ":" & & vbCrLf

= ""

End Sub

Private Sub Form_Load()

= P '返回本机的Ip地址

ort =1002

End Sub

Private Sub Winsock1_Connect() '连接成功

d = False

MsgBox = ("连接成功")

End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)

If <> 0 Then '返

回Winsock的状态,若非关闭状态,则关闭

requestID '用Accept方法来接收客户端的连接请求

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Dim sss As String

a sss '接收数据

= & & ":" & sss & vbCrLf

End Sub

Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)

Dim ss As String

a ss

= & & ":" & ss & vbCrLf

End Sub

Private Sub Winsock3_DataArrival(ByVal bytesTotal As Long)

Dim s As String

a s

= & & ":" & s & vbCrLf

End Sub

3.程序运行结果

图1-1 运行结果

图1-2 连接成功 发送数据

图1-3 接收数据

图1-4 关于作者

图1-5 通信成功

图1-6 对方界面

四、实验总结

本次试验是做聊天程序,最开始的时候还有些担心,担心会比较困难,但在开始实验的时候老师把实验的代码和控件都给了我们,只要我们加以修改达到预期的效果即可,这在某种程度上大大减小了本次实验的难度。其实老师给了我们C++和VB的程序代码,但相对于C++,VB显得较为简单一些,所以我们就选择了用VB为程序的开发软件。很遗憾的是这次实验只实现了简单的一对一,一对多的简单聊天,却无法实现文件的传输功能,通过这次实验,我理解了作为计算机网络各个层之间的关系,物理层,MAC层,网络层和运用层之间的关系,作为我们普通的用户,一般都是直接在应用层实现各个功能,而对底层的工作无需知道。这个聊天程序也是在应用层上面实现的。本次实验是在小组成员的共同努力下完成的,也第一次知道了用winsock可以在应用层实现计算机之间的通信,很多关于winsock的功能都是从网上down下来的,发现实践确实是个促进我们学习的好途径。这次实验打破了一台电脑做软件的局限性,让我知道原来一些程序还是需要联网才能做得起来,测试也不是一台机器能完成得了的,这是需要我们大家的齐心合力,共同配合才能做好的事情,客观的加深了同学之间的凝聚力。


本文标签: 实验 实现 程序 连接 端口号