说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

设计Chat程序 -VB资料

HTML文档下载 WORD文档下载 PDF文档下载
设计Chat程序 -VB资料
用WinSock设计Chat程序

摘要
  随着Internet的蓬勃发展,网络界面的交流使我们能够即时收到各地所发生的各项信息。我们在使用各种Browser浏览各网点时,只要Server能提供Chat(闲聊)的服务项目,我们就可以通过Browser所提供的Chat程序与网络上的其他使用者即时对谈及交流心得。本篇文章通过Visual Basic 5.0所提供的WInSock control,设计一个Chat应用程序。我们通过Client及Server之间的文件传输,可以了解Chat程序的工作原理。

WinSock control简介
  WinSock是windows系统提供的一种网络文件传输协议。以往我们使用WinSock设计程序时,必须调用系统提供的API来完成;但是在Visual
Basic中调用API,因涉及参数传递类型,用起来并不方便。Visual Basic 5.0 提供WinSock control简化我们的设计流程。它可以利用User Datagram Protocol(UDP)或Transmission Control Protocol(TCP),来设计网络的Client-Server 程序。
  TCP是一种Connection base的Protocol,在文件传输时会先行建立Link,通过Link可确保文件传输的正确性;UDP则是一种Connectionless的Protocol,它在传输文件时不会确保传输端的文件能够正确无误的传送到接收端,所以当我们使用UDP protocol时,我们通常要自己作接收确认的工作。
  UDP protocol看起来好像比较没效率,其实不然!UDP protocol有一个好处:当文件很小,或我们要做网络boardcast (广播)时,会比较有效率。 所以了! 当我们利用WinSock设计程序时,首先要依自己的需要,决定使用那一种protocol。本文将分别教您使用TCP及UDP Protocol来设计Chat程序。

  以TCP设计Chat程序

Step 1:找出Domain name及IP address
  在“我的电脑”中选择“控制面板”。Double click“网络”选项,选择“标识”,您将会发觉您的计算机名称、工作组名等信息。将它记录起来,我们稍后会用到。

Step 2:设计TCP Server程序
  在File选项中选New Project建立一个新的工程,在屏幕上会看到许多选项,如ActiveX Document.EXE、ActiveX Document.DLL、ActiveX.EXE、ActiveXControl等,选Standard.EXE。
  接着在Project下选择Property属性选项,在General选项下将ProjectName改为TCP-Server,并将Form名称及Caption更改为Server。在屏幕的Form上加入一个WinSock control,取名为Tcps;加入两个TextBox control(Outtext、Intext),并在两个TextBox前加入两个label,分别将caption改为Outtext、Intext。

〈TextBox〉
Name
------------------------------------------------
Outtext(输出文件)
Intext(输入文件)

〈Label〉
Caption
------------------------------------------------
Outtext(输出文件)
Intext(输入文件)

  在Form_Load()中加入以下程序代码,这个动作是设置好我们Local的传输端口,并到接收的状态:
Tcps.protocol=0-scktcp protocol
Tcps.LocalPort = 1002
Tcps.Listen

  双击Tcps,在Tcps_ConnectionRequest(ByVal requestID As Long)中加入以下程序代码,这表示winsock接受了连接请求:
Tcps.Accept requestID

  双击Outtext到Outtext_change(),加入以下程序代码,当Outtext内容改变后,文件就会自动送出:
Tcps.SendData Outtext.text

  在Tcps_DataArrival(ByVal bytesTotal As Long)中加入以下程序代码,这是用来把所接收的文件显示在Intext这个TextBox中。
Dim S As StrIng
Tcps.GetData S
InText.Text = S

  这样我们就完成了Server端的设计。

Step 3:设计TCP Client程序
  在File选项中选择New Project建立一个新的工程,在屏幕上看到许多选项,如ActiveX Document.EXE、ActiveX Document.DLL、ActiveX.EXE、ActiveX Control等。选Standard.EXE。接着在 Project下,选择Property属性选项,在General选项下,将Project Name改为TCP-Client,并将FORM名称及Caption更改为Client。
  在屏幕的Form上加入一个WinSock control,取名为 Tcpc,将protocol property设置成 0-scktcp protocol,加入两个TextBox control(Outtext、Intext),并在两个TextBox前加入两个Label,分别将其Caption改为Outtext、Intext。接着放入一个Button(button1)并将Caption 改为Connect。

(TextBox)
Name
-----------------------------------------------------
Outtext(输出文件)
Intext(输入文件)

(Label)
Caption
--------------------------------------------------------
Outtext(输出文件)
Intext(输入文件)

〈Button〉
Name             Caption
--------------------------------------------------------
Button1(执行建立session命令) Connect

  在Form_Load()中加入以下程序代码,这个动作是设置好我们Remote所要连接的传输端口及其网络名称。我们要连接的计算机网络名称为DAVID:
Tcpc.RemoteHost ="David"
Tcpc.RemotePort=1002

  双击Outtext到Outtext_change()加入以下程序代码,当Outtext内容改变后,文件会自动送出:
Tcpc.SendData Outtext.text

  在Tcpc_DataArrival(ByVal bytesTotal As Long)中加入以下程序代码,这是用来把所接收的文件显示在Intext这个TextBox 中。
Dim S As StrIng
Tcpc.GetData S
InText.Text = S

  这样就完成了Client端的设计。

Step 4:测试TCP Chat程序
  分别执行Server及Client程序,这时在Client的屏幕上显示In及Out TextBox及一个Connect Button;在Server屏幕上显示In及Out TextBox。
  我们按Client程序Connect button建立连接,连接建立成功后,我们可尝试在Client的Outbox 中输入一些字符串:Hello nice to meet you!我们将在Server端的Inbox看到这些字串。 接着我们在Server的Outbox也输入一些字符串:Nice to meet you, too! 我们将在Client 端的Inbox看到这些字符串。结果证明我们成功了!
-----------------------------------------------------------------

用UDP设计Chat程序

Step 1:设计第一个UDP(UDP1)程序
  在File选项中选择New Project建立一个新的工程,屏幕上会看到许多选项,如ActiveX Document.EXE、ActiveX Document.DLL、ActiveX.EXE、ActiveX Control等,这时选Standard.EXE。接着在Project下选择Property属性选项,在General选项下将Project Name改为UDP1,将protocol property设置成0-udptcp protocol,并将Form名称及Caption更改为UDP1。
  在屏幕的Form上加入一个WinSock control,取名为UDP1;加入两个TextBox control ( Outtext、Intext),并于两个TextBox前加入两个
Label control,分别将Caption改为 Outtext、 Intext。

(TextBox)
Name
-----------------------------------------------------
Outtext(输出文件)
Intext(输入文件)

(Label)
Caption
-------------------------------------------------------
Outtext(输出文件)
Intext(输入文件)

  在Form_Load()中加入以下程序代码,这个动作是设置好我们要连接的远端输入端口为 1001,并将输入端口设为1002。
UDP1.RemoteHost = "DAVID"
UDP1.RemotePort = 1001
UDP1.BInd 1002

  双击Outtext到Outtext_change(),加入以下程序代码,当Outtext内容改变,文件会自动送出:
UDP1.SendData Outtext.text

  在UDP1_DataArrival(ByVal bytesTotal As Long)中加入以下程序代码,这是用来把所接收的文件显示在Intext这个TextBox 中。
Dim S As String
UDP1.GetData S
InText.Text = S

  这样我们就完成了UDP1的设计。

Step 2:设计第二个UDP(UDP2)程序
  在File选项中选New Project建立一个新的工程,屏幕上会看到许多选项,如ActiveX Document.EXE、 ActiveX Document.DLL、ActiveX.EXE、ActiveX Control等,这时要选Standard.EXE。接着在 Project下,选择Property属性选项,在General选项下,将Project Name改为UDP2,将protocol property设置成0-udptcp protocol,并将Form名称及Caption更改为UDP2 。
  在屏幕的Form上加入一个WinSock control取名为UDP2 ,加入两个TextBox control ( Outtext、Intext),并在两个TextBox control前加入两个Label control,分别将Caption改为Outtext、Intext。

(TextBox)
Name
-----------------------------------------------------
Outtext(输出文件)
Intext(输入文件)

(Label)
Caption
--------------------------------------------------------
Outtext(输出文件)
Intext(输入文件)

  在Form_Load()中加入以下程序代码,这个动作是设置好我们要连接的远端输入端口,设置为1002,并将输入端口设置为1001。
UDP2.RemoteHost = "MARY"
UDP2.RemotePort = 1002
UDP2.Bind 1001

  双击Outtext到Outtext_change()加入以下程序代码,当Outtext内容改变,文件就会自动送出:
UDP2.SendData Outtext.text

  在UDP2_DataArrival(ByVal bytesTotal As Long) 中加入以下程序代码,这是用来把所接收的文件显示在Intext这个TextBox 中。
Dim S As StrIng
UDP2.GetData S
InText.Text = S

  这样我们就完成了UDP2的设计。

Step 3:测试UDP Chat程序
  分别执行UDP1及UDP2程序。这时UDP1的屏幕上显示In及Out TextBox;UDP2屏幕也显示In及Out两个TextBox。我们在UDP1的Outbox中输入一些字符串 I want talk to Mary,我们将在UDP2端的Inbox看到这些字符串。接着我们在UDP2的Outbox也输入一些字符串This is Mary speaking!,我们将在UDP1端的Inbox看到这些字串。结果证明我们成功了!
Delphi编写网络程序的安全措施 DELPHI 和 THE INTERNET Delphi开发Web Server程序如何返回图像 Delphi开发Web Server程序响应用户的输入 DELPHI与INTERNET(二) DELPHI与INTERNET(一) Delphi中串行通信的实现 Email 服务器的简单实现-Delphi资料 Internet编程技巧-Delphi资料 SMTP组件的使用方法-Delphi资料 Web Server程序开发环境的建立-Delphi资料 WEB数据库的开发-Delphi资料 Win32 行程通讯的观念与技术-Delphi资料 编程发送E-mail-Delphi资料 调用那个函数得到本机的IP-Delphi资料 动态改变/添加网络设置中的 TCP/IP 的 DNS 地址-Delphi资料 任何动态改变/添加网络设置中的 TCP/IP 的 DNS 地址-Delphi资料 如何在程序中动态取得Win98的网络邻居中的工作组及计算机名-Delphi资料 动态设置DNS地址-Delphi资料 读取IE收藏夹内网址的信息-Delphi资料 改网络计算机名-Delphi资料 关于WEB应用程序的打印组件开发初探-Delphi资料 基于TELNET协议的DELPHI程序与LINUX主机通信的实现 监视POP3信箱-Delphi资料 开发WEBMAIL程序-Delphi资料 开发响应用户输入的数据库web Server-Delphi资料 利用Delphi编程发送E-mail 利用Delphi编写Socket通信程序 利用Delphi开发网络数据库应用 在许多系统中,出于安全或其它原因,常常要求随时对键盘进行监控,一个专-Delphi资料 链接的视觉效果-Delphi资料 数组怎么用呀? 为什么我的一台IBM电脑(win2000),ping内网网关,一直通;但ping外网,一会通,一会断。而我同一HUB上的其它电脑(win98),ping内网或 网络程序员中的javascript怎么学呀?高人求助方法、教程、经验! 求助?? 救命啊,关于datetimepicker的问题 八年女友分手,散分.直到把分散完.来者有分 气死了,肺要炸了 在一个干干净净的98se上,如果想要运行一个C#的程序,需要安装哪些文件?注册哪些信息? 插入数据,简单问题,UP有分. 时间计算出错!急啊!!! 为什么我画透明位图,重画了n次后,位图会显示为黑色,重画次数少没问题 快来呀! 如何使用BDE打开有密码的PRODOX的数据库 为什么用Windows Media Encoder9做网络电台,有5个人连上后就不能有人再连接 update的问题 没分了,但还是要提问:为什么我的sleep(2000)会出错。 系统分析员工作状况和薪资大调查 我的自己怎么浏览 不了ASP。NET 如何在运行过程中动态生成一个非可视化的控件? 局域网中为什么就我不能共享上网? 有没有人帮忙? asc转换成字符的问题 关于句柄的解释! 在职研究生,值不值? 高分请教:指针赋值问题 用PB我怎么样才能一句一句读TXT文件??? 笑死不陪命!! http://top2u.net/~ec-soft 帮帮忙,解决一个不是asp的问题,给分!! 如何实现这样的功能 笑死不陪命!! http://top2u.net/~ec-soft qq设计 奇怪的VF,怎么修改Label1的caption? 赠送小程序者有分 如何配置外置Moderm??? 用户游览时在页面上启动了一个Timer,如何在用户关闭游览器时停止此Timer? 关于JBuilder中MSSQL2000在EJB设计时DataSource的连接问题?求救!!! linux 0.01是在UNIX上开发的吗? 裸机上怎么成功引导它的呢? 大家看看我程序错在何处,谢谢了 winroute代理怎么设置让指定的用户只能在指定的时间上网。。。 怎样写一份采用J2EE的框架的软件测试报告? C#还能使用BHO吗?如果能100分求C#使用BHO(browser helper object)的例子。 请问如何制作Win98启动盘(我现在没有Win98的机子)? 关于换行的问题 javascript判断操作系统 一个奇怪的time问题,偶是菜鸟了~~~~~~~~~~~ d7版本所带的qr是什么版本的? 请教:创建数据库表时,怎样突破默认字段长度? 免费注册 Jboss 或 应用服务器 除了网上有,买d版的不知道有没有啊,下载太慢啊!! datagrid 中的一例为4位小数的数据,如何在datagrid设置使其值显示为带二位小数?? 让你的企业、产品、网站一夜成名 企业中一般如何写数据字典阿?急,在线等待 求mc lyte的cold rock a party空间链接 翻译A few days ago,I have read an article that says however human kind tries to alter the future by applying relativity theory; the universe tends to spend the least amount of energy possible.As a result,whatever we try to change will have the exac take 后面能接vacationvs吗?我只看到有take a vacation. Susan is anything but poor是什么意思啊 take my vacation是什么意思 They selected Tom,( ) they liked,as caption.括号里填可以什么关系代词?whom可不可以? they selected Tom head of their workshop请问:这句话是什么意思?head of是什么意思?head什么词性?selected Tom 后面不需要用一个“当、作为”之意的动词吗? i was supposed to leave 这里的to leave 什么成分 Improper Silicon apply on the Hopper Collector 这句话是什么意思啊? 侠盗飞车罪恶都市Cap The Collector这个任务在哪里接接任务的图标在当老大那个豪宅那 但是那里只可以领钱 但是找不到Cap The Collector任务所以说一下在哪里接这个任务一楼的说明白点 侠盗飞车5城市风云V点的Cap The Collector任务怎么过?楼前有一个圆圈型的东西 ,一撞上全是钱 那使什么? 一艘游船在泰国旅游城市芭提雅附近发生孙杨无证驾驶被确认 浙江体育局表示深朴槿惠说如有益半岛和平愿与金正恩会谈缅甸若开邦近海翻船数十人失踪湖南希望小学为百亿项目腾地被拆 官方习近平叮嘱土家族群众:好好干、有奔头马来西亚要求“全面解释”对其监听行为奥运冠军孙杨驾卡宴被公交车追尾 涉嫌习近平赴湘西调研扶贫攻坚习近平摘柚子:“这是技术活”第六届“汉语桥”世界中学生中文比赛闭华硕不将就,发布“VR高标”项目北京房租全球第一,高达平均工资1.2中国大批战机现身巴铁军事基地,出啥大妖王股连续四日涨停,后市是阴谋还是机诚琛独家:申请魁省投资移民成功秘诀布斯掌金中国成功发射鲲鹏1B探空火箭 射高突输卵管堵塞如何才能成功怀上宝宝呢?择业参考:12类薪酬持续提升的技术职[美丽河北]公交司机苏伯春 暖心服务[美丽河北]交警苑顺之:立警为公 执
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘