网络编程用VB实现简单的聊天实验报告

时间:2024.4.5

实验3:计算机网络实验——网络编程1

一、实验目的

(1)熟悉和掌握网络编程的基本方法和步骤;

(2)进一步理解client/server交互模式;

(3)加深学生对于网络协议概念的理解以及协议的设计和实现方法。

二、实验任务

使用任意网络编程语言(Java、C、VB、Delphi等)编写网络选课模拟程序,它由client和server两部分组成,client和server之间的通信基于TCP协议。实现数据的收发。

三、网络编程:

大多数网络应用程序都遵从client/server交互模型。该模型中,服务器应用是一种专门用来提供某一种服务的程序,它被动地等待通信,而客户应用主动地启动通信,请求服务器的服务。服务器程序既可以接收信息也能发送信息,还可以成为客户。

TCP/UDP赋予每个服务一个唯一的协议端口号。服务器程序通过协议端口号来指定它所提供的服务,然后被动地等待通信。客户在发送连接请求时,必须说明服务器程序运行主机的IP地址和协议端口号来指定它所希望的服务。服务器端计算机通过此端口号将收到的请求转向正确的服务器程序。

大多数网络编程语言都提供或者使用控件封装了套接字应用程序接口(Socket API),应用程序通过套接字接口调用来实现和传输层交互。用户目前可以使用两种套接口,即流套接字TCP和数据报套接字UDP。流式套接字定义了一种可靠的面向连接的服务,提供了双向的,有序的,无重复并且无记录边界的数据流服务。数据报套接字定义了一种无连接的服务,支持双向的数据流,但并不保证是可靠,有序,无重复的。也就是说,一个从数据报套接字接收信息的进程有可能发现信息重复了,或者和发出时的顺序不同。数据报套接字的一个重要特点是它保留了记录边界。

套节字API主要包括表1所示的接口。

使用面向连接的套接字编程,通过图2来表示其时序。套接字工作过程如下:服务器首先启动,通过调用socket()建立一个套接字,然后调用bind()将该套接字和本地网络地址联系在一起,再调用listen()使套接字做好侦听的准备,并规定它的请求队列的长度,之后就调用accept()来接收连接。客户在建立套接字后就可调用connect()和服务器建立连接,连接一旦建立,客户机和服务器之间就可以通过调用read()和write()来发送和接收数据。最后,待数据传送结束后,双方调用close()关闭套接字。

表1 套节字API主要接口

四.程序设计及编程思路

1.打开VB.单击文件——>新建工程。在新建工程的窗口中选择标准EXE.单击确定。

2.在Form1中添加如下控件。

以此作为TCP服务器的界面。

3.双击每个控件来添加其功能代码。

Private temp As Long '定义TCP服务器下标数组

Private listcount(10000) As Byte '定义下拉框数组

Private xb As Long '定义下标

Private Sub Command1_Click() '连接

Winsock1(temp).LocalPort = Val(Text2.Text)

Winsock1(temp).Listen

Command1.Enabled = False

Command2.Enabled = True

End Sub

Private Sub Command2_Click()  '退出TCP连接

Winsock1(temp).Close

Command1.Enabled = True

Command2.Enabled = False

End Sub

Private Sub Command3_Click() '发送数据

Dim int1 As Integer

Do While List1.SelCount > 0

    Do Until List1.Selected(int1)

         m = 1

         int1 = int1 + 1

    Loop

    Winsock1(listcount(int1)).SendData Text3.Text

Exit Do  '一定要跳出,否则进入死循环

Loop

End Sub

Private Sub Form_Load()

xb = 0

End Sub

Private Sub Winsock1_ConnectionRequest(vari As Integer, ByVal requestID As Long)

Dim i As Long

    'temp = vari    '将变量赋值

    '遍历数组查找空闲的套接字

    For i = 0 To Winsock1.UBound

        If Winsock1(i).State = sckClosed Then '找到空闲的套接字

            Winsock1(i).Accept requestID  '接收连接

            List1.AddItem Winsock1(i).RemoteHostIP & ": " & Winsock1(i).RemotePort

            temp = i

            listcount(xb) = temp

            xb = xb + 1

            Exit Sub

        End If

    Next

    '如果上面未找到,则增加一个新的套接字

   

    Load Winsock1(i)

    temp = i

    listcount(xb) = temp

    xb = xb + 1

    Winsock1(i).Accept requestID  '接受连接

    List1.AddItem Winsock1(i).RemoteHostIP & ": " & Winsock1(i).RemotePort

   

End Sub

Private Sub Winsock1_DataArrival(temp As Integer, ByVal bytesTotal As Long)

    Dim tmpstr As String

    Winsock1(temp).GetData tmpstr

    Text1.Text = tmpstr

  End Sub

Private Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)

End Sub

4. 再次单击文件——>新建工程。在新建工程的窗口中选择标准EXE.单击确定。

5.在Form中添加如下控件。

以此来作为TCP客户端。

6.双击控件来添加其功能代码。

Private Sub Command1_Click() '连接

Winsock1.RemotePort = Val(Text2.Text)    '目的端口位

Winsock1.RemoteHost = Trim(Text4.Text) '目的IP

'Winsock1.LocalPort = Val(Text5.Text)

Winsock1.Connect

Command1.Enabled = False

Command2.Enabled = True

End Sub

Private Sub Command2_Click()  '退出TCP连接

Winsock1.Close

Command1.Enabled = True

Command2.Enabled = False

End Sub

Private Sub Command3_Click() '发送数据

Winsock1.SendData Text3.Text

End Sub

Private Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

    Dim tmpstr As String

    Winsock1.GetData tmpstr

    Text1.Text = tmpstr

  End Sub

Private Sub Text4_Change()

End Sub

7.建立好客户端与服务器后,将目的端口位设置为同一个端口号,来保证客户端与服务器相连。

在客户端的TCP参数设置栏中设置目的IP(本实验是在同一台PC上,所以IP地址为本机IP地址)

8.设置好本地端口位和目的IP后,先单击服务器上的连接按钮,再单击客户端的连接按钮。此时服务器的客户端信息将会出现如下画面,表示连接成功。

9.在客户端的发送区输入想要发送的内容,如:这是客户端。点击发送。

此时服务器将会收到客户端发送的内容。

10.在服务器的发送区输入内容。如:这是服务器。

点击发送。此时客户端将会接收到服务器的内容。

实验心得

【陆劲锛】:这次软件开发让我学到了很多的知识。知识只有转变有实际而有用的东西才能显现出它的价值。学习不只是学习理论知识,更重要的是自己动手操作的能力。在现今的社会上,要想立足,就要有过硬的本领,要有扎实的功底。 这个软件工程的项目实战让我真真切切感受到软件开发的全过程,这让我明白软件的开发是一门艺术,而不是代码的简单叠加。这是一个团体的凝聚力的体现。通过这次开发,我第一次深入的去思考一个软件的构成与实现,以前上网聊QQ的时候从来没有想过如何实现它的功能,等到让自己来做的时候才发现其中的任何一环都是非常重要的。在实践中,我也学到了很多编程方面的知识。由于是在这学期才开始使用Java编程,加上时间问题,我们的程序还有很多不尽如人意的地方。例如:很多功能没有实现(语音视频,文件传输,个人空间等等),并且界面粗糙生硬。这些都是以后需要努力的地方。从这个过程中,我还体会到一点,那就是交流的重要性,自己知道的东西要怎么样表达出来让别人听懂,听明白,交流也是一门艺术。


第二篇:基于WinSock的简单TCP网络编程实验报告


实验报告

实验课程名称:          通信软件基础实验课          

        院:          软件工程学院                

        业:          软件工程                    

指导教师:                                      

报告人姓名:                             

      号:                            

        级:                               

        期:                                      

更多相关推荐:
网络编程实验报告

网络编程课程设计报告题目姓名学院专业班级学号指导教师基于Linux网络聊天室的设计陈佳悦陈雄兰信息科学技术学院网络工程网络工程10219xx021319xx0214薛卫职称副教授基于Linux网络聊天室的设计摘...

网络编程试验报告

武汉理工大学学生实验报告书实验课程名称网络软件编程技术开课学院计算机科学与技术学院指导老师姓名毛雪涛学生姓名学生专业班级软件sy110120xx20xx学年第二学期

网络编程实验报告

20xx年秋季学期计算机网络编程实验报告班级计121班学号12101020xx8姓名刘杰总成绩评语指导教师签字日期实验一登陆页面及菜单界面的实现一实验目的1熟悉NET程序设计方法2熟悉WindowsForm控件...

网络编程实验报告

计算机科学与工程学院网络工程专业20XX级网络编程实验大作业报告网络编程实验大作业报告即时通讯软件的设计与实现完成日期20xx416I海之星网吧计费管理系统的设计与实现学号姓名目录目录II1背景介绍311业务背...

网络编程实验报告

实验一TCPSocketAPI程序设计一预备知识1网络编程基本概念网络上的计算机间的通讯实质上是网络中不同主机上的程序之间的通讯在互联网中使用IP地址来标识不同的主机在网络协议中使用端口号来标识主机上不同进程即...

linux网络编程实验报告

河南师范大学设计性实验报告Linux网络编程实验河南师范大学综合性设计性实验项目简介注开课时间填本实验项目所有实验班的具体上课时间如11月12日下午300500

网络程序设计实验报告

目录1需求分析211电子商城网站的目的和意义212网站功能分析22电子商城网站的设计221功能模块设计222数据库设计43电子商城网站的实现531开发工具及环境配置5311开发环境5312安装及配置532程序设...

Windows体系编程实验报告(华北电力大学科技学院)

附件3科技学院课程设计综合实验报告2020年度第学期名称Windows体系编程题目院系信息工程系班级软件09k2学号学生姓名闫雪峰指导教师实验学时12学时成绩日期20xx年5月19日一课程设计综合实验的目的...

网络编程实验报告

网络编程实验报告指导老师姓名学号班级实验题目网络文件传输实验目的了解网络文件传输的方法了解FTP协议基础学习使用WinSock实现网络文件的传输了解点对点P2P网络文件传输的方法学习使用WinSock实现P2P...

网络编程用VB实现简单的聊天实验报告

实验3计算机网络实验网络编程1一实验目的1熟悉和掌握网络编程的基本方法和步骤2进一步理解clientserver交互模式3加深学生对于网络协议概念的理解以及协议的设计和实现方法二实验任务使用任意网络编程语言Ja...

java聊天室实验报告 网络编程技术实验报告

网络编程技术大作业修改履历目录1文档概述...41.1文档目的和范围...41.2术语/缩略语...41.3参考文档...52系统概述...52.1项目说明...52.2需求分析...52.3可行性或难点分析.…

Java网络编程实验报告

惠州学院计算机科学系网络工程专业SoftwareEngineeringLaboratoryDeptofComputerScienceandTechnologyHuihzouUniversityTELampFAX...

网络编程实验报告(29篇)