TCP协议开发试验报告Word文档格式.docx

上传人:b****7 文档编号:22760333 上传时间:2023-02-05 格式:DOCX 页数:10 大小:94.04KB
下载 相关 举报
TCP协议开发试验报告Word文档格式.docx_第1页
第1页 / 共10页
TCP协议开发试验报告Word文档格式.docx_第2页
第2页 / 共10页
TCP协议开发试验报告Word文档格式.docx_第3页
第3页 / 共10页
TCP协议开发试验报告Word文档格式.docx_第4页
第4页 / 共10页
TCP协议开发试验报告Word文档格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

TCP协议开发试验报告Word文档格式.docx

《TCP协议开发试验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《TCP协议开发试验报告Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。

TCP协议开发试验报告Word文档格式.docx

班级

计本

(1)

学号

一、实验目的

学会使用Winsock控件的TCP方式实现一个网络聊天程序,以达到学会面向连接方式的程序设计方法。

二.实验环境

Windowsxp操作系统,装有Visualbasic6.0软件

三、实验内容与步骤

1.在客户端创建一个新的工程将其命名为“Client”

2.将窗体的标题改为“客户端”。

3.在窗体中添加一个WinSock控件,并将其命名为winsockserver。

4.在窗体中添加一个listbox控件。

将其命名为list1。

5.在frmClient中添加一个TextBox控件。

将其命名为txtsend。

6.在窗体上放两个CommandButton控件,并将其命名为“Command1”和“Command2”。

7.将Command1控件的标题改为“连接”,将Command2控件的标题改为“发送”。

8.在窗体中添加如下的代码。

(1)当用户单击“连接”按钮后,触发时间处理程序如下:

PrivateSubCommand2_Click()

Winsockclient.Connect'

向服务器发出连接请求

EndSub

(2)当用户单击“发送”按钮,所触发的时间处理过程如下:

PrivateSubCommand3_Click()

Winsockclient.SendDataTextsend.Text'

将textsed文本框中的内容发送给远程计算机

Textsend.Text="

"

EndSub

(3)其他事件程序:

PrivateSubForm_Load()

Textsend.Visible=False

List1.Visible=False

Command3.Visible=False

Winsockclient.RemotePort=1001'

连接远程计算机上的1001端口

Winsockclient.RemoteHost="

qianfang-8ecf4e"

'

远程计算机的名字

PrivateSubText1_Change()

Winsockclient.RemoteHost=Text1.Text'

在text2文本框中输入远程计算机名或IP地址

PrivateSubWinsockclient_Close()

Winsockclient.Close'

关闭连接

End

'

与远程计算机取得连接后,进入下面的程序

PrivateSubwinsockclient_Connect()

Textsend.Visible=True

Text1.Visible=False

List1.Visible=True

Command2.Visible=False

Command3.Visible=True

取得连接后,对收到的数据进行DataArrival处理

PrivateSubwinsockclient_DataArrival(ByValbytesTotalAsLong)

DimsAsString

Winsockclient.GetDatas'

从远程计算机接收到的数据放入s中

在list1中显示接收到的内容

List1.AddItem"

&

Index&

"

Trim(s)

服务器端的程序

在窗体中添加三个WinSock控件,将其分别命名为

SckListen、sckBusy和sckServer并将“sckServer”的“Index”属性设置为0

(1)定义程序中的全局变量。

PrivateMaxChanAsInteger'

定义MaxChan为整型,使用winsock控件的最大值

(2)在form_load中,进行变量初始化,并设置winsock控件数组。

PrivateSubForm_Load()'

from窗口元素装载

最大允许15个客户端同时登录

DimiAsInteger'

定义变量i为整型

MaxChan=15'

将15赋值给Maxchan

Fori=1ToMaxChan-1'

进入for循环MacChan递减

LoadsckServer(i)'

装载第i个命名为sckServer的winsock控件

Nexti'

下一个i控件

sckListen.LocalPort=1001'

在命名为sckListen的winsock控件上设置本地的监听端口为1001,并初始化

sckListen.Listen'

开始监听

命令中指定了本地主机的通信端口,并使用Listen方法来监听连接请求。

(3)当客户端有连接请求时,在服务器端触发ConnectionRequest事件,其时间处理程序代码如下:

PrivateSubsckListen_ConnectionRequest(ByValrequestIDAsLong)'

winsock控件的ConnectionRequest事件

决定由哪一Winsock接受请求

Fori=0ToMaxChan-1

IfsckServer(i).State=0Then'

查看winsock控件状态是否为0

ExitFor

EndIf

Nexti

如果有空的winsock则使用winsock控件的accept方法接受连接

IfsckServer(i).State=0Then

sckServer(i).AcceptrequestID

ExitSub

如果所有Winsock都用完则由专门的“忙”Winsock接受请求,以免用户要求得不到响应

sckBusy.Close

sckBusy.Acceptrequested

(4)在DataArrival事件被触发后,对接受到的数据进行相应的处理。

PrivateSubsckServer_DataArrival(IndexAsInteger,ByValbytesTotalAsLong)

DimsAsString

DimiAsInteger

sckServer(Index).GetDatas'

用winsock的getdata方法获取当前数据块并将其存储在s中

判断是否为悄悄话,点对点方式

IfUCase(Left(Trim(s),2))="

PT"

Then'

返回是以pt开头,“pt”不区分大小写

IfIsNumeric(Mid(Trim(s),3,2))Then'

判断返回的的第三个字符开始的两个字符为数字

如果以上两个条件都满足,则进入一下进程

i=Mid(Trim(s),3,2)'

将返回的第三个字符开始的两个字符赋值给i

用winsock的senddata方法将数据发送给远程计算机,格式为Channel“i”+内容

sckServer(i).SendData"

Channel"

Right(Trim(s),Len(Trim(s))-4)

DoEvents

Else'

广播方式

利用winsock的State属性给所有连接在服务器上的客户发消息

IfsckServer(i).State=7Then'

如果已连接则用winsock的senddata向远程计算机发送数据

将接受到的数据放入命名为lstReceive的listbox控件中

lstReceive.AddItem"

(5)其他事件程序。

PrivateSubsckBusy_Close()

sckBusy.Close'

关闭命名为sckBusy的winsock控件连接

PrivateSubsckBusy_DataArrival(ByValbytesTotalAsLong)

sckBusy.SendData"

服务器忙,请稍后再连接!

如果服务器忙,则发送“”中的内容

如果连接失败则Error事件被触发

PrivateSubsckListen_Error(ByValNumberAsInteger,DescriptionAsString,ByValScodeAsLong,ByValSourceAsString,ByValHelpFileAsString,ByValHelpContextAsLong,CancelDisplayAsBoolean)

sckListen.Close'

用close方法关闭TCP连接

sckListen.LocalPort=1000'

初始化本地主机1000端口

sckserver控件发生错误,使用sckServer的error事件进行处理

PrivateSubsckServer_Error(IndexAsInteger,ByValNumberAsInteger,DescriptionAsString,ByValScodeAsLong,ByValSourceAsString,ByValHelpFileAsString,ByValHelpContextAsLong,CancelDisplayAsBoolean)

sckServer(Index).Close'

(6)现在,在服务器既能监听又能接收数据,而且还能把接收到的数据显示出来,特别说明的是,这时的程序代码还没完,因为当远程客户计算机关闭连接时,应用程序应正确关闭TCP连接。

关闭事件处理程序如下:

PrivateSubsckServer_Close(IndexAsInteger)

5.实验结果

点对点聊天

在1号和2号线程进行聊天的时候,0号线程不能看到他们的聊天内容。

群聊

四、实验过程与分析

实验中用到了vb编程,通过编程实现聊天功能。

服务器要既能监听又能接收数据,而且还要能把接收到的数据显示出来,当远程客户计算机关闭连接时,应用程序应正确关闭TCP连接。

五、实验总结

要保留聊天记录应该用listbox控件而不是textbox控件,在建立客户端与服务器端连接的时候要仔细,不能缺少任何一步,否则就无法建立连接了。

六、教师评语

实验过程合理,较好的完成了实验内容。

教师签名

武光利

成绩

批阅日期

2011.11.4

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1