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

设计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看到这些字串。结果证明我们成功了!
高德LBS应用大赛:百万大奖、千万基金等你来拿! Gartner:有数据有真相 从浪潮看服务器市场走势 PhoneGap 3.5.0发布,不再支持iOS 5和ARM64 “中美青年创客大赛”之“创客·教育论坛” 以创客教育支持创新人才培养 授之以渔,谷歌发布开源秘密武器Kubernetes 炫耀分数已经out!ShareSDK发布游戏内视频录制SDK Android开发者必知的5个开源库 UCloud完成B轮融资5000万美元 Git远程操作详解 《近匠》iMAG:移动应用快速跨平台开发工具 Facebook斥资30亿美元购Snapchat遭拒后,推Slingshot 全球开发者报告:程序媛崛起,企业应用更赚钱! 土豪经济 E人E本发布首款4G安全手机 内忧外患:Android版FuelBand应用来得太迟? MongoDB 2.6.2 发布,大大改进查询功能 清华毕军&华为马云:SDN是学术和产业都看好的领域 向三星和苹果发难:亚马逊FirePhone 3D手机强势来袭 支付宝移动端与NFC芯片商、手机商合作 推出近场支付产品 Go 1.3正式发布,改进正则表达式! API设计如龙生九子,Tunneling、Hypermedia等更受开发者青睐 NFV+SDN,博科打造开放式网络平台 亚马逊开放双SDK:摄像购物,追踪脸部玩游戏 解析淘宝Hadoop作业平台——宙斯Zeus 亚马逊的心思:要Android不要谷歌 Vuforia SDK全面更新:3.0版可实时生成虚拟场景和物体 Stream SDK:以手为“剪”,随时随地分享精彩内容 一周消息树:惠普研发基于Linux开源操作系统 打造全新计算机 我从谷歌学到的那些事:Toilet文化、代码实验室 对话大神Scott Shenker:从物理博士到SDN's Uncle 巨头们的又一战:健康数据服务平台 移动应用广告新竞争,Facebook不再一家独大 关于select中日期的简单问题 有无VB关于库管的源代码,给我一份,anweiauto@163.net 湖北考高程的朋友看过来!!!! 什么是递归算法,它又如何实现?(有例子最好!) 如何将数组中所有的值为0的项去掉? 请问:用SQL Select数据源建立一个数据窗口,该窗口包含两的表的内容,两个表的字段已通过主键(ID)进行了连接,可是在运行过程中能检索数据,但是却不能进行增加、删除、修改的操作,不知为什么? 在c++ builder 延时5秒怎么做到 类似与c++的sleep()函数功能 请教一下:站点服务器上的服务扩咱展不兼容怎么解决啊,我要疯了。 关于pb调chm格式文件的问题?? to killerdanny 急需解答 关于ActiveX DLL的问题,希望高手帮助 关于文件操作的问题 关于installshield更改所打包的应用程序的ICON的问题!急!!! 请问谁那里有页面规范、代码规范、SQL规范?重金求购 欲寻求项目来作(报酬多少无所谓)!!! 请问各位大虾,在DELPHI中EXE文件的调用方法? 菜鸟问题:忘了如何定义几位的变量?谁能告诉我,谢谢! 如果我要在window.showModalDialog 打开的页面中返回一个值,或者在被打开的页面中改变打开打开者中的某属性该怎么做? 关于木马程序的设计! 新手的问题(关于成员函数使用的位置???) 谁知道那里有ado教程 请高手介绍点用perl操纵mysql的经验和方法,不胜感激 about BCB 的数据库开发问题 请大家详细说一下SQL Select数据源的具体使用方法,书上说的太简单了,用SQL Select数据源建立的数据窗口为什么不能进行增加、删除操作,还不让修改,愁啊! 诸位:这个显示隐藏工具栏状态栏的代码有三处错,可我不知为什么???以指出 怎么将ACCESS2000表中的内容导入到SQLSERVER数据库中 我想把LOCAL声明改为.data? 可不行,为什么? .net似乎对组件编程的支持很强?就是说,似乎省区了很多繁琐的细节? 各位有人可以告诉我怎么实现SMTP用户验证吗? 大家有用这个软件吗?有的话请写下你使用的感觉,有什么不足? CoolSoft HTML Optimizer 谁那里有页面开发规范,重金求购 帮助中HTML文件的链接问题!!! asp.net是否可以用任何一种vs.net语言? 请教---------一个函数返回指针值的问题!!!! 如何可以筛选出被修改过的数据记录。。。。。。 如何在广域网上实现SOCKET通讯,与局域网有什么不同? invocation在Java中怎么翻译啊? oracle中增量导数据的问题!! 过多的异常捕捉会影响程序性能吗? 二个form时怎样用request来收取数据? 在sybase里健好的表如何从新修改? 一个小问题,这个变量是什么类型的??? 使用通讯控件的疑惑 怎样实现在文本文件中修改某一行的其中字符串 Nokia MobileSet中如何让手机识别中文? 注册表坏了怎么办? 大哥们,能否告诉小弟,在 ms sql server2000中如何修改 sa 用户的口令 我的超星不能用了!!! 十万火急:PDF文件修改 大哥们,能否告诉小弟,在 ms sql server2000中如何修改 sa 用户的口令.. 为什么电器外面的导线不会发热?我想知道为什么电磁炉、电灯、电烙鉄等电器都只是里面发热,而外面的线路不会受引响?请告诉我原因!是不是它们内部安装了什麼? 直角三角形斜边公式hl速度 向量安某个向量平移是什么意思?怎么l个平移法?公式?例己知A(3,7),B(5,2),将向量AB按向量a=(1,2)平移后所得向量的坐标是?什么叫按某个向量平移啊?怎么个移法?根据哪一点哪条路径移?帮我描述一 求角a等于多少度?求长边C的长度?(求完整公式及答案) 初中物理实验导线有多粗? 向量平移怎么向量平移已知直线l:x-2y+m=0按向量a=(2,-3)平移后得到的直线l1与圆(x-2)²+(y-1)²=5相切,m值? 用电器发生短路故障时 为什么相当于一根导线(1)用电器发生短路故障时 为什么相当于一根导线?(2)为什么用电器与导线并联会被短路?(1)用电器发生短路故障时 为什么 用电器相当于 初中物理创新实验关于声、光或物态变化的 要创新的 把一个图像按某向量平移是什么意思啊 ?什么叫按某向量平移?怎么按某向量平移? 初中物理中短路是指一根导线接在用电器两端.用电器是指什么?电压表、电流表是吗?用电器我就知道灯泡、电阻是,电压表电流表在什么情况下会短路? 全部…哪里有? 若锌和镁的质量为4.8克,与100克稀硫酸恰好完全反应,则该稀硫酸的质量分数可能为多少? 串联电路中,电流处处相等,那通过导线与通过用电器的电流是不是也相等?并联电路同一个支路是不是也一个一样啊,今天考试上有什么什么导线损失了多少电功,弄的一头雾水. 初中物理有哪些实验的方法? 把电源,用电器,________用导线连接起来组成的电流的路径叫电路 一根导线接在用电器的两端这样为什么短路 要有作品名称、材料、制作方法、及原理~最好是新.要求创新. 平移的概念 已知长度和半径和电阻率,求电阻值R的公式 某同学将 6克镁条加入到50毫升的稀硫酸中 ,恰好完全反应,反应后所得溶液质量为100克谢谢了,某同学将 6克镁条加入到70毫升的稀硫酸中 ,恰好完全反应,反应后所得溶液质量为100克.式计算.今 平移的定义在平面内,一个图形由一个位置沿某个方向()另一个位置,这样的图形叫做平移.平移不改变图形的()和() 在探究向心力速度大小表达式a(N)=v^2/r中三角v/AB=v/r是什么意思 某同学将4.8克镁条加入100克的稀硫酸中 恰好完全反应 试计算产生氢气多少克 稀硫酸溶质质量分数 平移的定义是什么?急!快 心形线的的长度设为L,那么 L=∫(r^2+r'^2)^(1/2)dθ 其中,r'表示r的导数.公式怎么得来的r=a(1+cosθ)(a>0) 2.4克镁与100毫升稀硫酸完全反应,体积变化忽略,求1:产生气体标况下体积 2:溶液中镁离子物质的量浓度 (化学方程式和公式都要有啊.急) 平移的定义是什么? 有图纸,求内孔15度角的长度,和内孔r的长度.急、、、、需要计算公式. 平移题三角形A'B'C'是由三角形ABC沿BC方向平移了BC长度的一半得到的,若三角形ABC面积是20,那么求四边形A'ECC'的面积(要过程)(ABC是普通三角形.) 平移的特征定义 心形线的的长度设为L,L=∫(r^2+r'^2)^(1/2)dθ 其中,r'表示r的导数此公式怎么得来 心形曲线为r=a(1+cosΘ) 几何证明题,交点在外面就是这种情况,仍然可以完成证明,两角相加改成相减而已 生理盐水的化学式 为什么家庭电器中的灯丝通电后热的发光?而与灯丝串联的导线发热不明显 数学几何题.关于图形平移将边长2cm的正方形ABCD沿AC剪开,再把三角形ABC沿着AD方向平移得到三角形A1B1C1,若两个三角形重叠部分面积是1cm2,则它移动距离AA1等于( )cm.回答过程要充分 内阻到底是用电器、电源内部的电阻 还是导线的电阻? 大功率的用电器为什么不能用细导线连接 求几何题解释 生活中有哪些平移现象 硫酸是氢原子和硫酸根离子形成的吗 为什么 计算4.8克的镁条与足量的稀硫酸完全反应,生成氢气的质量. 在日常生活中,你看到过的平移现象有 、 、 、 ;旋转现象有 、 、 、 .平移 升旗杆上的旗、电梯上的人、传输带上的物品、推拉门、推拉窗 旋转 旋转木马、摩天轮、电风扇、转盘、方向盘 纯净的硫酸是由H2SO4分子构成的,为什么不是由氢离子和硫酸根离子构成 6.5克镁与100克稀硫酸溶液恰好反应计算:(1)可制得氢气多少克?(2)这种硫酸溶液的溶质的质量分数是多少(3)完全反应后,所得溶液的溶质质量分数是多少 生活中哪些是平移现象不要让我去自己查的,要完整. 在H2SO4中,硫酸根离子(sO4 2-)的化合价是 (5)若测得镁铝合金中镁的质量分数为4%,现取n克镁铝合金,投入到足量的质量分数为9.8%的稀硫酸溶液中,共收集得到氢气0.8克,该合金的质量n为? 观察生活周围各处,指出几个平移现象,并加以描述 求直角三角形斜边长度多少?长边180 短边50 斜边是多少?要求写计算公式及方法! 一个大功率的用电器,用铝线接入电路后,工作过程中发现导线太热,为了不使导线过热,下列措施好的是A改用长短粗细都相同的铜导线B将铝线加长些C改用长短相同,更粗些的导线D将铝线减短些 日常生活中有哪些平移现象? h2so4表示一个硫酸分子中含有2个氢原子?这句话对吗?为什么? 一个大功率的用电器,用铝线接入电源後,工作过程中发现导体太热,为了不使导线过热,下列措施好的是 A.改用长短、粗细一样的铜导线 B.将铝导线加长些 C.改用长短一样,更粗些的铝导线 D.将 在生理盐水中,它的溶质(化学式)是什么? 求直角三角形斜边长度多少?底边10米、 高边1.5米,斜边是多少?要求写计算公式及方法! 按向量平移的问题,麻烦解释清楚点啊……f(x)=X^2+4x+5的图像按a平移后为y=X^2的图像,则a=也就是说按向量平移就是给原式中x-h,y-k? 如图,折线AOBC是一段围墙,一根5米长的绳子的一端拴在O点处的柱子上,另一端拴着一只小羊.(1)如果OA=6米,OB=3米,BC=4米,∠AOB=90°,∠MBC=60°,求小羊活动的最大区域面积.(π取3结果精确到0.1平 用电器为什么会发热?请告诉我为什么,是要原理的.我读电子信息工程,这个是一个什么题里面的.说清楚点是不是关于数字电路,模拟电路的什么关系?举个列子显卡为什么会热,不要说工作就发 直角三角形斜边公式是?…… 按向量平移y=2^x按向量(-2,1)平移得到的解析式?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn